{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "## Single Decision Tree (SDT) Benchmark\n",
    "\n",
    "H2O cloud is inicialized before every run and shutdown after every run. Algorithm is firstly tested on Training performance and after on Evaluation performance.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['/Users/yuliia/work/h2o-3', '/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python39.zip', '/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9', '/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/lib-dynload', '', '/Users/yuliia/work/h2o-3/venv/lib/python3.9/site-packages', '/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/site-packages', 'h2o-py/build/main', 'h2o-py/build/main']\n"
     ]
    }
   ],
   "source": [
    "import sys\n",
    "sys.path.append(\"h2o-py/build/main\") # path to h2o build\n",
    "\n",
    "print(sys.path)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import seaborn as sb\n",
    "import time\n",
    "import math\n",
    "import random\n",
    "import h2o\n",
    "from h2o.estimators import H2OSingleDecisionTreeEstimator\n",
    "from h2o.estimators import H2ORandomForestEstimator\n",
    "from sklearn.tree import DecisionTreeClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "# Notebook parameters\n",
    "attempt_per_thread = 1 # number of runs of the algorithm in the thread # todo - change to 5\n",
    "max_depth = 5 \n",
    "threds = [12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]\n",
    "DATA_PATH = \"/Users/yuliia/work/h2o-3/benchmark_data/\"\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "def train_models(nthreads, data, start_cluster=True):\n",
    "    if start_cluster:\n",
    "        h2o.init(nthreads=nthreads)\n",
    "    h2o.connect()\n",
    "    hf = h2o.H2OFrame(data)\n",
    "    start = time.time()\n",
    "    SDT_h2o = H2OSingleDecisionTreeEstimator(model_id = \"single_decision_tree.hex\", max_depth=max_depth)\n",
    "    SDT_h2o.train(training_frame = hf, y='label')\n",
    "    end = time.time()\n",
    "    sdt_time = end - start\n",
    "    print(f\"SDT Time: {sdt_time}s\")\n",
    "    start = time.time()\n",
    "    DRF_h2o = H2ORandomForestEstimator(model_id = \"random_forest.hex\", ntrees = 1, max_depth = max_depth, \n",
    "                                       sample_rate=1, score_tree_interval=2)\n",
    "    hf['label'].asfactor()\n",
    "    DRF_h2o.train(training_frame = hf, y='label')\n",
    "    end = time.time()\n",
    "    drf_time = end - start\n",
    "    print(f\"DRF Time: {drf_time}s\")\n",
    "    \n",
    "    predictions_sdt = SDT_h2o.predict(hf)\n",
    "    predictions_drf = DRF_h2o.predict(hf)\n",
    "    \n",
    "    print(predictions_sdt.type)\n",
    "    if start_cluster:\n",
    "        h2o.cluster().shutdown()\n",
    "        time.sleep(10)\n",
    "    return sdt_time, drf_time\n",
    "\n",
    "\n",
    "def run_benchmark(data, start_cluster=True):\n",
    "    all_times = []\n",
    "    all_times_num_sdt = []\n",
    "    all_times_num_drf = []\n",
    "    for nthreads in threds:\n",
    "        times_sdt = []\n",
    "        times_drf = []\n",
    "        for i in range(attempt_per_thread):\n",
    "            sdt_time, drf_time = train_models(nthreads, data, start_cluster)\n",
    "            times_sdt.append(sdt_time)\n",
    "            times_drf.append(drf_time)\n",
    "        print(f\"SDT {np.mean(times_sdt)}s\")\n",
    "        print(f\"DRF {np.mean(times_drf)}s\")\n",
    "        all_times_num_sdt.append(times_sdt)\n",
    "        all_times_num_drf.append(times_drf)\n",
    "        all_times.append(f\"thread {nthreads} - SDT {np.mean(times_sdt)}s and DRF {np.mean(times_drf)}s\")\n",
    "\n",
    "    sdt_means = dict()\n",
    "    drf_means = dict()\n",
    "    for i, nthreads in enumerate(threds):\n",
    "        print(f\"{nthreads} - SDT = {np.mean(all_times_num_sdt[i])}, DRF = {np.mean(all_times_num_drf[i])}\")\n",
    "        sdt_means[nthreads] = np.mean(all_times_num_sdt[i])\n",
    "        drf_means[nthreads] = np.mean(all_times_num_drf[i])\n",
    "    \n",
    "    return sdt_means, drf_means\n",
    "        \n",
    "    \n",
    "def plot_result(sdt_means, drf_means):\n",
    "    data = {\"x\":[], \"y\": [], \"label\":[]}\n",
    "    for label, coord in sdt_means.items():\n",
    "        data[\"x\"].append(label)\n",
    "        data[\"y\"].append(coord)\n",
    "\n",
    "    data_drf = {\"x\":[], \"y\": [], \"label\":[]}\n",
    "    for label, coord in drf_means.items():\n",
    "        data_drf[\"x\"].append(label)\n",
    "        data_drf[\"y\"].append(coord)    \n",
    "\n",
    "    fig=plt.figure(figsize=(8,10))\n",
    "    fig.add_subplot(111)\n",
    "    plt.plot(data['x'], data['y'], '-o', label=\"SDT\", linewidth=3)\n",
    "    plt.plot(data_drf['x'], data_drf['y'], '-o', label=\"DRF\", linewidth=3)\n",
    "    plt.xlabel(\"Number of threads\")\n",
    "    plt.ylabel(\"Computing time (s)\")\n",
    "    plt.legend()\n",
    "    plt.tick_params(direction='out', length=6, width=2) \n",
    "    plt.title(f\"Single Decision Tree - training benchmark\\nModel: max_depth = {max_depth}\")\n",
    "    plt.savefig(f\"h2o-scale-perf.png\", bbox_inches='tight', pad_inches=.05)\n",
    "    plt.show()\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "## Training stage\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "### Big data and small dimension"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Checking whether there is an H2O instance running at http://localhost:54321 . connected.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td>H2O_cluster_uptime:</td>\n",
       "<td>35 secs</td></tr>\n",
       "<tr><td>H2O_cluster_timezone:</td>\n",
       "<td>Europe/Prague</td></tr>\n",
       "<tr><td>H2O_data_parsing_timezone:</td>\n",
       "<td>UTC</td></tr>\n",
       "<tr><td>H2O_cluster_version:</td>\n",
       "<td>3.37.0.99999</td></tr>\n",
       "<tr><td>H2O_cluster_version_age:</td>\n",
       "<td>54 minutes </td></tr>\n",
       "<tr><td>H2O_cluster_name:</td>\n",
       "<td>H2O_from_python_yuliia_82aqco</td></tr>\n",
       "<tr><td>H2O_cluster_total_nodes:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_free_memory:</td>\n",
       "<td>7.499 Gb</td></tr>\n",
       "<tr><td>H2O_cluster_total_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_allowed_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_status:</td>\n",
       "<td>locked, healthy</td></tr>\n",
       "<tr><td>H2O_connection_url:</td>\n",
       "<td>http://localhost:54321</td></tr>\n",
       "<tr><td>H2O_connection_proxy:</td>\n",
       "<td>{\"http\": null, \"https\": null}</td></tr>\n",
       "<tr><td>H2O_internal_security:</td>\n",
       "<td>False</td></tr>\n",
       "<tr><td>Python_version:</td>\n",
       "<td>3.9.6 final</td></tr></table></div>"
      ],
      "text/plain": [
       "--------------------------  -----------------------------\n",
       "H2O_cluster_uptime:         35 secs\n",
       "H2O_cluster_timezone:       Europe/Prague\n",
       "H2O_data_parsing_timezone:  UTC\n",
       "H2O_cluster_version:        3.37.0.99999\n",
       "H2O_cluster_version_age:    54 minutes\n",
       "H2O_cluster_name:           H2O_from_python_yuliia_82aqco\n",
       "H2O_cluster_total_nodes:    1\n",
       "H2O_cluster_free_memory:    7.499 Gb\n",
       "H2O_cluster_total_cores:    10\n",
       "H2O_cluster_allowed_cores:  10\n",
       "H2O_cluster_status:         locked, healthy\n",
       "H2O_connection_url:         http://localhost:54321\n",
       "H2O_connection_proxy:       {\"http\": null, \"https\": null}\n",
       "H2O_internal_security:      False\n",
       "Python_version:             3.9.6 final\n",
       "--------------------------  -----------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Connecting to H2O server at http://localhost:54321 ... successful.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td>H2O_cluster_uptime:</td>\n",
       "<td>35 secs</td></tr>\n",
       "<tr><td>H2O_cluster_timezone:</td>\n",
       "<td>Europe/Prague</td></tr>\n",
       "<tr><td>H2O_data_parsing_timezone:</td>\n",
       "<td>UTC</td></tr>\n",
       "<tr><td>H2O_cluster_version:</td>\n",
       "<td>3.37.0.99999</td></tr>\n",
       "<tr><td>H2O_cluster_version_age:</td>\n",
       "<td>54 minutes </td></tr>\n",
       "<tr><td>H2O_cluster_name:</td>\n",
       "<td>H2O_from_python_yuliia_82aqco</td></tr>\n",
       "<tr><td>H2O_cluster_total_nodes:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_free_memory:</td>\n",
       "<td>7.499 Gb</td></tr>\n",
       "<tr><td>H2O_cluster_total_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_allowed_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_status:</td>\n",
       "<td>locked, healthy</td></tr>\n",
       "<tr><td>H2O_connection_url:</td>\n",
       "<td>http://localhost:54321</td></tr>\n",
       "<tr><td>H2O_connection_proxy:</td>\n",
       "<td>{\"http\": null, \"https\": null}</td></tr>\n",
       "<tr><td>H2O_internal_security:</td>\n",
       "<td>False</td></tr>\n",
       "<tr><td>Python_version:</td>\n",
       "<td>3.9.6 final</td></tr></table></div>"
      ],
      "text/plain": [
       "--------------------------  -----------------------------\n",
       "H2O_cluster_uptime:         35 secs\n",
       "H2O_cluster_timezone:       Europe/Prague\n",
       "H2O_data_parsing_timezone:  UTC\n",
       "H2O_cluster_version:        3.37.0.99999\n",
       "H2O_cluster_version_age:    54 minutes\n",
       "H2O_cluster_name:           H2O_from_python_yuliia_82aqco\n",
       "H2O_cluster_total_nodes:    1\n",
       "H2O_cluster_free_memory:    7.499 Gb\n",
       "H2O_cluster_total_cores:    10\n",
       "H2O_cluster_allowed_cores:  10\n",
       "H2O_cluster_status:         locked, healthy\n",
       "H2O_connection_url:         http://localhost:54321\n",
       "H2O_connection_proxy:       {\"http\": null, \"https\": null}\n",
       "H2O_internal_security:      False\n",
       "Python_version:             3.9.6 final\n",
       "--------------------------  -----------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Parse progress: |████████████████████████████████████████████████████████████████| (done) 100%\n",
      "sdt Model Build progress: |"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/yuliia/work/h2o-3/h2o-py/build/main/h2o/estimators/estimator_base.py:208: RuntimeWarning: Response is numeric, so the regression model will be trained. However, the cardinality is equaled to two, so if you want to train a classification model, convert the response column to categorical before training.\n",
      "  warnings.warn(mesg[\"message\"], RuntimeWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "██████████████████████████████████████████████████████| (done) 100%\n",
      "SDT Time: 0.9183011054992676s\n",
      "drf Model Build progress: |"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/yuliia/work/h2o-3/h2o-py/build/main/h2o/estimators/estimator_base.py:208: RuntimeWarning: Sample rate is 100% and no validation dataset and no cross-validation. There are no out-of-bag data to compute error estimates on the training data!\n",
      "  warnings.warn(mesg[\"message\"], RuntimeWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "██████████████████████████████████████████████████████| (done) 100%\n",
      "DRF Time: 1.0399630069732666s\n",
      "sdt prediction progress: |███████████████████████████████████████████████████████| (done) 100%\n",
      "drf prediction progress: |███████████████████████████████████████████████████████| (done) 100%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table>\n",
       "<thead>\n",
       "<tr><th style=\"text-align: right;\">  predict</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "</tbody>\n",
       "</table>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<bound method H2OFrame.type of >\n",
      "SDT 0.9183011054992676s\n",
      "DRF 1.0399630069732666s\n",
      "Checking whether there is an H2O instance running at http://localhost:54321 ..... not found.\n",
      "Attempting to start a local H2O server...\n",
      "  Java Version: openjdk version \"17.0.4.1\" 2022-08-12 LTS; OpenJDK Runtime Environment Corretto-17.0.4.9.1 (build 17.0.4.1+9-LTS); OpenJDK 64-Bit Server VM Corretto-17.0.4.9.1 (build 17.0.4.1+9-LTS, mixed mode, sharing)\n",
      "  Starting server from /Users/yuliia/work/h2o-3/build/h2o.jar\n",
      "  Ice root: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmp3t8o_240\n",
      "  JVM stdout: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmp3t8o_240/h2o_yuliia_started_from_python.out\n",
      "  JVM stderr: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmp3t8o_240/h2o_yuliia_started_from_python.err\n",
      "  Server is running at http://127.0.0.1:54321\n",
      "Connecting to H2O server at http://127.0.0.1:54321 ... successful.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td>H2O_cluster_uptime:</td>\n",
       "<td>03 secs</td></tr>\n",
       "<tr><td>H2O_cluster_timezone:</td>\n",
       "<td>Europe/Prague</td></tr>\n",
       "<tr><td>H2O_data_parsing_timezone:</td>\n",
       "<td>UTC</td></tr>\n",
       "<tr><td>H2O_cluster_version:</td>\n",
       "<td>3.37.0.99999</td></tr>\n",
       "<tr><td>H2O_cluster_version_age:</td>\n",
       "<td>54 minutes </td></tr>\n",
       "<tr><td>H2O_cluster_name:</td>\n",
       "<td>H2O_from_python_yuliia_r1oz7l</td></tr>\n",
       "<tr><td>H2O_cluster_total_nodes:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_free_memory:</td>\n",
       "<td>8 Gb</td></tr>\n",
       "<tr><td>H2O_cluster_total_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_allowed_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_status:</td>\n",
       "<td>locked, healthy</td></tr>\n",
       "<tr><td>H2O_connection_url:</td>\n",
       "<td>http://127.0.0.1:54321</td></tr>\n",
       "<tr><td>H2O_connection_proxy:</td>\n",
       "<td>{\"http\": null, \"https\": null}</td></tr>\n",
       "<tr><td>H2O_internal_security:</td>\n",
       "<td>False</td></tr>\n",
       "<tr><td>Python_version:</td>\n",
       "<td>3.9.6 final</td></tr></table></div>"
      ],
      "text/plain": [
       "--------------------------  -----------------------------\n",
       "H2O_cluster_uptime:         03 secs\n",
       "H2O_cluster_timezone:       Europe/Prague\n",
       "H2O_data_parsing_timezone:  UTC\n",
       "H2O_cluster_version:        3.37.0.99999\n",
       "H2O_cluster_version_age:    54 minutes\n",
       "H2O_cluster_name:           H2O_from_python_yuliia_r1oz7l\n",
       "H2O_cluster_total_nodes:    1\n",
       "H2O_cluster_free_memory:    8 Gb\n",
       "H2O_cluster_total_cores:    10\n",
       "H2O_cluster_allowed_cores:  10\n",
       "H2O_cluster_status:         locked, healthy\n",
       "H2O_connection_url:         http://127.0.0.1:54321\n",
       "H2O_connection_proxy:       {\"http\": null, \"https\": null}\n",
       "H2O_internal_security:      False\n",
       "Python_version:             3.9.6 final\n",
       "--------------------------  -----------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Connecting to H2O server at http://localhost:54321 ... successful.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td>H2O_cluster_uptime:</td>\n",
       "<td>03 secs</td></tr>\n",
       "<tr><td>H2O_cluster_timezone:</td>\n",
       "<td>Europe/Prague</td></tr>\n",
       "<tr><td>H2O_data_parsing_timezone:</td>\n",
       "<td>UTC</td></tr>\n",
       "<tr><td>H2O_cluster_version:</td>\n",
       "<td>3.37.0.99999</td></tr>\n",
       "<tr><td>H2O_cluster_version_age:</td>\n",
       "<td>54 minutes </td></tr>\n",
       "<tr><td>H2O_cluster_name:</td>\n",
       "<td>H2O_from_python_yuliia_r1oz7l</td></tr>\n",
       "<tr><td>H2O_cluster_total_nodes:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_free_memory:</td>\n",
       "<td>8 Gb</td></tr>\n",
       "<tr><td>H2O_cluster_total_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_allowed_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_status:</td>\n",
       "<td>locked, healthy</td></tr>\n",
       "<tr><td>H2O_connection_url:</td>\n",
       "<td>http://localhost:54321</td></tr>\n",
       "<tr><td>H2O_connection_proxy:</td>\n",
       "<td>{\"http\": null, \"https\": null}</td></tr>\n",
       "<tr><td>H2O_internal_security:</td>\n",
       "<td>False</td></tr>\n",
       "<tr><td>Python_version:</td>\n",
       "<td>3.9.6 final</td></tr></table></div>"
      ],
      "text/plain": [
       "--------------------------  -----------------------------\n",
       "H2O_cluster_uptime:         03 secs\n",
       "H2O_cluster_timezone:       Europe/Prague\n",
       "H2O_data_parsing_timezone:  UTC\n",
       "H2O_cluster_version:        3.37.0.99999\n",
       "H2O_cluster_version_age:    54 minutes\n",
       "H2O_cluster_name:           H2O_from_python_yuliia_r1oz7l\n",
       "H2O_cluster_total_nodes:    1\n",
       "H2O_cluster_free_memory:    8 Gb\n",
       "H2O_cluster_total_cores:    10\n",
       "H2O_cluster_allowed_cores:  10\n",
       "H2O_cluster_status:         locked, healthy\n",
       "H2O_connection_url:         http://localhost:54321\n",
       "H2O_connection_proxy:       {\"http\": null, \"https\": null}\n",
       "H2O_internal_security:      False\n",
       "Python_version:             3.9.6 final\n",
       "--------------------------  -----------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Parse progress: |████████████████████████████████████████████████████████████████| (done) 100%\n",
      "sdt Model Build progress: |██████████████████████████████████████████████████████| (done) 100%\n",
      "SDT Time: 2.3876049518585205s\n",
      "drf Model Build progress: |██████████████████████████████████████████████████████| (done) 100%\n",
      "DRF Time: 2.5478038787841797s\n",
      "sdt prediction progress: |███████████████████████████████████████████████████████| (done) 100%\n",
      "drf prediction progress: |███████████████████████████████████████████████████████| (done) 100%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table>\n",
       "<thead>\n",
       "<tr><th style=\"text-align: right;\">  predict</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "</tbody>\n",
       "</table>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<bound method H2OFrame.type of >\n",
      "SDT 2.3876049518585205s\n",
      "DRF 2.5478038787841797s\n",
      "Checking whether there is an H2O instance running at http://localhost:54321 ..... not found.\n",
      "Attempting to start a local H2O server...\n",
      "  Java Version: openjdk version \"17.0.4.1\" 2022-08-12 LTS; OpenJDK Runtime Environment Corretto-17.0.4.9.1 (build 17.0.4.1+9-LTS); OpenJDK 64-Bit Server VM Corretto-17.0.4.9.1 (build 17.0.4.1+9-LTS, mixed mode, sharing)\n",
      "  Starting server from /Users/yuliia/work/h2o-3/build/h2o.jar\n",
      "  Ice root: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmpxn_uk0o1\n",
      "  JVM stdout: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmpxn_uk0o1/h2o_yuliia_started_from_python.out\n",
      "  JVM stderr: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmpxn_uk0o1/h2o_yuliia_started_from_python.err\n",
      "  Server is running at http://127.0.0.1:54321\n",
      "Connecting to H2O server at http://127.0.0.1:54321 ... successful.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td>H2O_cluster_uptime:</td>\n",
       "<td>03 secs</td></tr>\n",
       "<tr><td>H2O_cluster_timezone:</td>\n",
       "<td>Europe/Prague</td></tr>\n",
       "<tr><td>H2O_data_parsing_timezone:</td>\n",
       "<td>UTC</td></tr>\n",
       "<tr><td>H2O_cluster_version:</td>\n",
       "<td>3.37.0.99999</td></tr>\n",
       "<tr><td>H2O_cluster_version_age:</td>\n",
       "<td>54 minutes </td></tr>\n",
       "<tr><td>H2O_cluster_name:</td>\n",
       "<td>H2O_from_python_yuliia_289cb5</td></tr>\n",
       "<tr><td>H2O_cluster_total_nodes:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_free_memory:</td>\n",
       "<td>8 Gb</td></tr>\n",
       "<tr><td>H2O_cluster_total_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_allowed_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_status:</td>\n",
       "<td>locked, healthy</td></tr>\n",
       "<tr><td>H2O_connection_url:</td>\n",
       "<td>http://127.0.0.1:54321</td></tr>\n",
       "<tr><td>H2O_connection_proxy:</td>\n",
       "<td>{\"http\": null, \"https\": null}</td></tr>\n",
       "<tr><td>H2O_internal_security:</td>\n",
       "<td>False</td></tr>\n",
       "<tr><td>Python_version:</td>\n",
       "<td>3.9.6 final</td></tr></table></div>"
      ],
      "text/plain": [
       "--------------------------  -----------------------------\n",
       "H2O_cluster_uptime:         03 secs\n",
       "H2O_cluster_timezone:       Europe/Prague\n",
       "H2O_data_parsing_timezone:  UTC\n",
       "H2O_cluster_version:        3.37.0.99999\n",
       "H2O_cluster_version_age:    54 minutes\n",
       "H2O_cluster_name:           H2O_from_python_yuliia_289cb5\n",
       "H2O_cluster_total_nodes:    1\n",
       "H2O_cluster_free_memory:    8 Gb\n",
       "H2O_cluster_total_cores:    10\n",
       "H2O_cluster_allowed_cores:  10\n",
       "H2O_cluster_status:         locked, healthy\n",
       "H2O_connection_url:         http://127.0.0.1:54321\n",
       "H2O_connection_proxy:       {\"http\": null, \"https\": null}\n",
       "H2O_internal_security:      False\n",
       "Python_version:             3.9.6 final\n",
       "--------------------------  -----------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Connecting to H2O server at http://localhost:54321 ... successful.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td>H2O_cluster_uptime:</td>\n",
       "<td>03 secs</td></tr>\n",
       "<tr><td>H2O_cluster_timezone:</td>\n",
       "<td>Europe/Prague</td></tr>\n",
       "<tr><td>H2O_data_parsing_timezone:</td>\n",
       "<td>UTC</td></tr>\n",
       "<tr><td>H2O_cluster_version:</td>\n",
       "<td>3.37.0.99999</td></tr>\n",
       "<tr><td>H2O_cluster_version_age:</td>\n",
       "<td>54 minutes </td></tr>\n",
       "<tr><td>H2O_cluster_name:</td>\n",
       "<td>H2O_from_python_yuliia_289cb5</td></tr>\n",
       "<tr><td>H2O_cluster_total_nodes:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_free_memory:</td>\n",
       "<td>8 Gb</td></tr>\n",
       "<tr><td>H2O_cluster_total_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_allowed_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_status:</td>\n",
       "<td>locked, healthy</td></tr>\n",
       "<tr><td>H2O_connection_url:</td>\n",
       "<td>http://localhost:54321</td></tr>\n",
       "<tr><td>H2O_connection_proxy:</td>\n",
       "<td>{\"http\": null, \"https\": null}</td></tr>\n",
       "<tr><td>H2O_internal_security:</td>\n",
       "<td>False</td></tr>\n",
       "<tr><td>Python_version:</td>\n",
       "<td>3.9.6 final</td></tr></table></div>"
      ],
      "text/plain": [
       "--------------------------  -----------------------------\n",
       "H2O_cluster_uptime:         03 secs\n",
       "H2O_cluster_timezone:       Europe/Prague\n",
       "H2O_data_parsing_timezone:  UTC\n",
       "H2O_cluster_version:        3.37.0.99999\n",
       "H2O_cluster_version_age:    54 minutes\n",
       "H2O_cluster_name:           H2O_from_python_yuliia_289cb5\n",
       "H2O_cluster_total_nodes:    1\n",
       "H2O_cluster_free_memory:    8 Gb\n",
       "H2O_cluster_total_cores:    10\n",
       "H2O_cluster_allowed_cores:  10\n",
       "H2O_cluster_status:         locked, healthy\n",
       "H2O_connection_url:         http://localhost:54321\n",
       "H2O_connection_proxy:       {\"http\": null, \"https\": null}\n",
       "H2O_internal_security:      False\n",
       "Python_version:             3.9.6 final\n",
       "--------------------------  -----------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Parse progress: |████████████████████████████████████████████████████████████████| (done) 100%\n",
      "sdt Model Build progress: |██████████████████████████████████████████████████████| (done) 100%\n",
      "SDT Time: 2.3705079555511475s\n",
      "drf Model Build progress: |██████████████████████████████████████████████████████| (done) 100%\n",
      "DRF Time: 2.7473669052124023s\n",
      "sdt prediction progress: |███████████████████████████████████████████████████████| (done) 100%\n",
      "drf prediction progress: |███████████████████████████████████████████████████████| (done) 100%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table>\n",
       "<thead>\n",
       "<tr><th style=\"text-align: right;\">  predict</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "</tbody>\n",
       "</table>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<bound method H2OFrame.type of >\n",
      "SDT 2.3705079555511475s\n",
      "DRF 2.7473669052124023s\n",
      "Checking whether there is an H2O instance running at http://localhost:54321 ..... not found.\n",
      "Attempting to start a local H2O server...\n",
      "  Java Version: openjdk version \"17.0.4.1\" 2022-08-12 LTS; OpenJDK Runtime Environment Corretto-17.0.4.9.1 (build 17.0.4.1+9-LTS); OpenJDK 64-Bit Server VM Corretto-17.0.4.9.1 (build 17.0.4.1+9-LTS, mixed mode, sharing)\n",
      "  Starting server from /Users/yuliia/work/h2o-3/build/h2o.jar\n",
      "  Ice root: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmpmy9kuesv\n",
      "  JVM stdout: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmpmy9kuesv/h2o_yuliia_started_from_python.out\n",
      "  JVM stderr: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmpmy9kuesv/h2o_yuliia_started_from_python.err\n",
      "  Server is running at http://127.0.0.1:54321\n",
      "Connecting to H2O server at http://127.0.0.1:54321 ... successful.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td>H2O_cluster_uptime:</td>\n",
       "<td>03 secs</td></tr>\n",
       "<tr><td>H2O_cluster_timezone:</td>\n",
       "<td>Europe/Prague</td></tr>\n",
       "<tr><td>H2O_data_parsing_timezone:</td>\n",
       "<td>UTC</td></tr>\n",
       "<tr><td>H2O_cluster_version:</td>\n",
       "<td>3.37.0.99999</td></tr>\n",
       "<tr><td>H2O_cluster_version_age:</td>\n",
       "<td>55 minutes </td></tr>\n",
       "<tr><td>H2O_cluster_name:</td>\n",
       "<td>H2O_from_python_yuliia_ka9b6n</td></tr>\n",
       "<tr><td>H2O_cluster_total_nodes:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_free_memory:</td>\n",
       "<td>8 Gb</td></tr>\n",
       "<tr><td>H2O_cluster_total_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_allowed_cores:</td>\n",
       "<td>9</td></tr>\n",
       "<tr><td>H2O_cluster_status:</td>\n",
       "<td>locked, healthy</td></tr>\n",
       "<tr><td>H2O_connection_url:</td>\n",
       "<td>http://127.0.0.1:54321</td></tr>\n",
       "<tr><td>H2O_connection_proxy:</td>\n",
       "<td>{\"http\": null, \"https\": null}</td></tr>\n",
       "<tr><td>H2O_internal_security:</td>\n",
       "<td>False</td></tr>\n",
       "<tr><td>Python_version:</td>\n",
       "<td>3.9.6 final</td></tr></table></div>"
      ],
      "text/plain": [
       "--------------------------  -----------------------------\n",
       "H2O_cluster_uptime:         03 secs\n",
       "H2O_cluster_timezone:       Europe/Prague\n",
       "H2O_data_parsing_timezone:  UTC\n",
       "H2O_cluster_version:        3.37.0.99999\n",
       "H2O_cluster_version_age:    55 minutes\n",
       "H2O_cluster_name:           H2O_from_python_yuliia_ka9b6n\n",
       "H2O_cluster_total_nodes:    1\n",
       "H2O_cluster_free_memory:    8 Gb\n",
       "H2O_cluster_total_cores:    10\n",
       "H2O_cluster_allowed_cores:  9\n",
       "H2O_cluster_status:         locked, healthy\n",
       "H2O_connection_url:         http://127.0.0.1:54321\n",
       "H2O_connection_proxy:       {\"http\": null, \"https\": null}\n",
       "H2O_internal_security:      False\n",
       "Python_version:             3.9.6 final\n",
       "--------------------------  -----------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Connecting to H2O server at http://localhost:54321 ... successful.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td>H2O_cluster_uptime:</td>\n",
       "<td>03 secs</td></tr>\n",
       "<tr><td>H2O_cluster_timezone:</td>\n",
       "<td>Europe/Prague</td></tr>\n",
       "<tr><td>H2O_data_parsing_timezone:</td>\n",
       "<td>UTC</td></tr>\n",
       "<tr><td>H2O_cluster_version:</td>\n",
       "<td>3.37.0.99999</td></tr>\n",
       "<tr><td>H2O_cluster_version_age:</td>\n",
       "<td>55 minutes </td></tr>\n",
       "<tr><td>H2O_cluster_name:</td>\n",
       "<td>H2O_from_python_yuliia_ka9b6n</td></tr>\n",
       "<tr><td>H2O_cluster_total_nodes:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_free_memory:</td>\n",
       "<td>8 Gb</td></tr>\n",
       "<tr><td>H2O_cluster_total_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_allowed_cores:</td>\n",
       "<td>9</td></tr>\n",
       "<tr><td>H2O_cluster_status:</td>\n",
       "<td>locked, healthy</td></tr>\n",
       "<tr><td>H2O_connection_url:</td>\n",
       "<td>http://localhost:54321</td></tr>\n",
       "<tr><td>H2O_connection_proxy:</td>\n",
       "<td>{\"http\": null, \"https\": null}</td></tr>\n",
       "<tr><td>H2O_internal_security:</td>\n",
       "<td>False</td></tr>\n",
       "<tr><td>Python_version:</td>\n",
       "<td>3.9.6 final</td></tr></table></div>"
      ],
      "text/plain": [
       "--------------------------  -----------------------------\n",
       "H2O_cluster_uptime:         03 secs\n",
       "H2O_cluster_timezone:       Europe/Prague\n",
       "H2O_data_parsing_timezone:  UTC\n",
       "H2O_cluster_version:        3.37.0.99999\n",
       "H2O_cluster_version_age:    55 minutes\n",
       "H2O_cluster_name:           H2O_from_python_yuliia_ka9b6n\n",
       "H2O_cluster_total_nodes:    1\n",
       "H2O_cluster_free_memory:    8 Gb\n",
       "H2O_cluster_total_cores:    10\n",
       "H2O_cluster_allowed_cores:  9\n",
       "H2O_cluster_status:         locked, healthy\n",
       "H2O_connection_url:         http://localhost:54321\n",
       "H2O_connection_proxy:       {\"http\": null, \"https\": null}\n",
       "H2O_internal_security:      False\n",
       "Python_version:             3.9.6 final\n",
       "--------------------------  -----------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Parse progress: |████████████████████████████████████████████████████████████████| (done) 100%\n",
      "sdt Model Build progress: |██████████████████████████████████████████████████████| (done) 100%\n",
      "SDT Time: 2.408784866333008s\n",
      "drf Model Build progress: |██████████████████████████████████████████████████████| (done) 100%\n",
      "DRF Time: 2.3583719730377197s\n",
      "sdt prediction progress: |███████████████████████████████████████████████████████| (done) 100%\n",
      "drf prediction progress: |███████████████████████████████████████████████████████| (done) 100%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table>\n",
       "<thead>\n",
       "<tr><th style=\"text-align: right;\">  predict</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "</tbody>\n",
       "</table>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<bound method H2OFrame.type of >\n",
      "SDT 2.408784866333008s\n",
      "DRF 2.3583719730377197s\n",
      "Checking whether there is an H2O instance running at http://localhost:54321 ..... not found.\n",
      "Attempting to start a local H2O server...\n",
      "  Java Version: openjdk version \"17.0.4.1\" 2022-08-12 LTS; OpenJDK Runtime Environment Corretto-17.0.4.9.1 (build 17.0.4.1+9-LTS); OpenJDK 64-Bit Server VM Corretto-17.0.4.9.1 (build 17.0.4.1+9-LTS, mixed mode, sharing)\n",
      "  Starting server from /Users/yuliia/work/h2o-3/build/h2o.jar\n",
      "  Ice root: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmphle695og\n",
      "  JVM stdout: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmphle695og/h2o_yuliia_started_from_python.out\n",
      "  JVM stderr: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmphle695og/h2o_yuliia_started_from_python.err\n",
      "  Server is running at http://127.0.0.1:54321\n",
      "Connecting to H2O server at http://127.0.0.1:54321 ... successful.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td>H2O_cluster_uptime:</td>\n",
       "<td>03 secs</td></tr>\n",
       "<tr><td>H2O_cluster_timezone:</td>\n",
       "<td>Europe/Prague</td></tr>\n",
       "<tr><td>H2O_data_parsing_timezone:</td>\n",
       "<td>UTC</td></tr>\n",
       "<tr><td>H2O_cluster_version:</td>\n",
       "<td>3.37.0.99999</td></tr>\n",
       "<tr><td>H2O_cluster_version_age:</td>\n",
       "<td>55 minutes </td></tr>\n",
       "<tr><td>H2O_cluster_name:</td>\n",
       "<td>H2O_from_python_yuliia_7eib53</td></tr>\n",
       "<tr><td>H2O_cluster_total_nodes:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_free_memory:</td>\n",
       "<td>8 Gb</td></tr>\n",
       "<tr><td>H2O_cluster_total_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_allowed_cores:</td>\n",
       "<td>8</td></tr>\n",
       "<tr><td>H2O_cluster_status:</td>\n",
       "<td>locked, healthy</td></tr>\n",
       "<tr><td>H2O_connection_url:</td>\n",
       "<td>http://127.0.0.1:54321</td></tr>\n",
       "<tr><td>H2O_connection_proxy:</td>\n",
       "<td>{\"http\": null, \"https\": null}</td></tr>\n",
       "<tr><td>H2O_internal_security:</td>\n",
       "<td>False</td></tr>\n",
       "<tr><td>Python_version:</td>\n",
       "<td>3.9.6 final</td></tr></table></div>"
      ],
      "text/plain": [
       "--------------------------  -----------------------------\n",
       "H2O_cluster_uptime:         03 secs\n",
       "H2O_cluster_timezone:       Europe/Prague\n",
       "H2O_data_parsing_timezone:  UTC\n",
       "H2O_cluster_version:        3.37.0.99999\n",
       "H2O_cluster_version_age:    55 minutes\n",
       "H2O_cluster_name:           H2O_from_python_yuliia_7eib53\n",
       "H2O_cluster_total_nodes:    1\n",
       "H2O_cluster_free_memory:    8 Gb\n",
       "H2O_cluster_total_cores:    10\n",
       "H2O_cluster_allowed_cores:  8\n",
       "H2O_cluster_status:         locked, healthy\n",
       "H2O_connection_url:         http://127.0.0.1:54321\n",
       "H2O_connection_proxy:       {\"http\": null, \"https\": null}\n",
       "H2O_internal_security:      False\n",
       "Python_version:             3.9.6 final\n",
       "--------------------------  -----------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Connecting to H2O server at http://localhost:54321 ... successful.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td>H2O_cluster_uptime:</td>\n",
       "<td>03 secs</td></tr>\n",
       "<tr><td>H2O_cluster_timezone:</td>\n",
       "<td>Europe/Prague</td></tr>\n",
       "<tr><td>H2O_data_parsing_timezone:</td>\n",
       "<td>UTC</td></tr>\n",
       "<tr><td>H2O_cluster_version:</td>\n",
       "<td>3.37.0.99999</td></tr>\n",
       "<tr><td>H2O_cluster_version_age:</td>\n",
       "<td>55 minutes </td></tr>\n",
       "<tr><td>H2O_cluster_name:</td>\n",
       "<td>H2O_from_python_yuliia_7eib53</td></tr>\n",
       "<tr><td>H2O_cluster_total_nodes:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_free_memory:</td>\n",
       "<td>8 Gb</td></tr>\n",
       "<tr><td>H2O_cluster_total_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_allowed_cores:</td>\n",
       "<td>8</td></tr>\n",
       "<tr><td>H2O_cluster_status:</td>\n",
       "<td>locked, healthy</td></tr>\n",
       "<tr><td>H2O_connection_url:</td>\n",
       "<td>http://localhost:54321</td></tr>\n",
       "<tr><td>H2O_connection_proxy:</td>\n",
       "<td>{\"http\": null, \"https\": null}</td></tr>\n",
       "<tr><td>H2O_internal_security:</td>\n",
       "<td>False</td></tr>\n",
       "<tr><td>Python_version:</td>\n",
       "<td>3.9.6 final</td></tr></table></div>"
      ],
      "text/plain": [
       "--------------------------  -----------------------------\n",
       "H2O_cluster_uptime:         03 secs\n",
       "H2O_cluster_timezone:       Europe/Prague\n",
       "H2O_data_parsing_timezone:  UTC\n",
       "H2O_cluster_version:        3.37.0.99999\n",
       "H2O_cluster_version_age:    55 minutes\n",
       "H2O_cluster_name:           H2O_from_python_yuliia_7eib53\n",
       "H2O_cluster_total_nodes:    1\n",
       "H2O_cluster_free_memory:    8 Gb\n",
       "H2O_cluster_total_cores:    10\n",
       "H2O_cluster_allowed_cores:  8\n",
       "H2O_cluster_status:         locked, healthy\n",
       "H2O_connection_url:         http://localhost:54321\n",
       "H2O_connection_proxy:       {\"http\": null, \"https\": null}\n",
       "H2O_internal_security:      False\n",
       "Python_version:             3.9.6 final\n",
       "--------------------------  -----------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Parse progress: |████████████████████████████████████████████████████████████████| (done) 100%\n",
      "sdt Model Build progress: |██████████████████████████████████████████████████████| (done) 100%\n",
      "SDT Time: 2.3705830574035645s\n",
      "drf Model Build progress: |██████████████████████████████████████████████████████| (done) 100%\n",
      "DRF Time: 2.1372690200805664s\n",
      "sdt prediction progress: |███████████████████████████████████████████████████████| (done) 100%\n",
      "drf prediction progress: |███████████████████████████████████████████████████████| (done) 100%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table>\n",
       "<thead>\n",
       "<tr><th style=\"text-align: right;\">  predict</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "</tbody>\n",
       "</table>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<bound method H2OFrame.type of >\n",
      "SDT 2.3705830574035645s\n",
      "DRF 2.1372690200805664s\n",
      "Checking whether there is an H2O instance running at http://localhost:54321 ..... not found.\n",
      "Attempting to start a local H2O server...\n",
      "  Java Version: openjdk version \"17.0.4.1\" 2022-08-12 LTS; OpenJDK Runtime Environment Corretto-17.0.4.9.1 (build 17.0.4.1+9-LTS); OpenJDK 64-Bit Server VM Corretto-17.0.4.9.1 (build 17.0.4.1+9-LTS, mixed mode, sharing)\n",
      "  Starting server from /Users/yuliia/work/h2o-3/build/h2o.jar\n",
      "  Ice root: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmpf18o56cv\n",
      "  JVM stdout: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmpf18o56cv/h2o_yuliia_started_from_python.out\n",
      "  JVM stderr: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmpf18o56cv/h2o_yuliia_started_from_python.err\n",
      "  Server is running at http://127.0.0.1:54321\n",
      "Connecting to H2O server at http://127.0.0.1:54321 ... successful.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td>H2O_cluster_uptime:</td>\n",
       "<td>03 secs</td></tr>\n",
       "<tr><td>H2O_cluster_timezone:</td>\n",
       "<td>Europe/Prague</td></tr>\n",
       "<tr><td>H2O_data_parsing_timezone:</td>\n",
       "<td>UTC</td></tr>\n",
       "<tr><td>H2O_cluster_version:</td>\n",
       "<td>3.37.0.99999</td></tr>\n",
       "<tr><td>H2O_cluster_version_age:</td>\n",
       "<td>56 minutes </td></tr>\n",
       "<tr><td>H2O_cluster_name:</td>\n",
       "<td>H2O_from_python_yuliia_5w6lkp</td></tr>\n",
       "<tr><td>H2O_cluster_total_nodes:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_free_memory:</td>\n",
       "<td>8 Gb</td></tr>\n",
       "<tr><td>H2O_cluster_total_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_allowed_cores:</td>\n",
       "<td>7</td></tr>\n",
       "<tr><td>H2O_cluster_status:</td>\n",
       "<td>locked, healthy</td></tr>\n",
       "<tr><td>H2O_connection_url:</td>\n",
       "<td>http://127.0.0.1:54321</td></tr>\n",
       "<tr><td>H2O_connection_proxy:</td>\n",
       "<td>{\"http\": null, \"https\": null}</td></tr>\n",
       "<tr><td>H2O_internal_security:</td>\n",
       "<td>False</td></tr>\n",
       "<tr><td>Python_version:</td>\n",
       "<td>3.9.6 final</td></tr></table></div>"
      ],
      "text/plain": [
       "--------------------------  -----------------------------\n",
       "H2O_cluster_uptime:         03 secs\n",
       "H2O_cluster_timezone:       Europe/Prague\n",
       "H2O_data_parsing_timezone:  UTC\n",
       "H2O_cluster_version:        3.37.0.99999\n",
       "H2O_cluster_version_age:    56 minutes\n",
       "H2O_cluster_name:           H2O_from_python_yuliia_5w6lkp\n",
       "H2O_cluster_total_nodes:    1\n",
       "H2O_cluster_free_memory:    8 Gb\n",
       "H2O_cluster_total_cores:    10\n",
       "H2O_cluster_allowed_cores:  7\n",
       "H2O_cluster_status:         locked, healthy\n",
       "H2O_connection_url:         http://127.0.0.1:54321\n",
       "H2O_connection_proxy:       {\"http\": null, \"https\": null}\n",
       "H2O_internal_security:      False\n",
       "Python_version:             3.9.6 final\n",
       "--------------------------  -----------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Connecting to H2O server at http://localhost:54321 ... successful.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td>H2O_cluster_uptime:</td>\n",
       "<td>03 secs</td></tr>\n",
       "<tr><td>H2O_cluster_timezone:</td>\n",
       "<td>Europe/Prague</td></tr>\n",
       "<tr><td>H2O_data_parsing_timezone:</td>\n",
       "<td>UTC</td></tr>\n",
       "<tr><td>H2O_cluster_version:</td>\n",
       "<td>3.37.0.99999</td></tr>\n",
       "<tr><td>H2O_cluster_version_age:</td>\n",
       "<td>56 minutes </td></tr>\n",
       "<tr><td>H2O_cluster_name:</td>\n",
       "<td>H2O_from_python_yuliia_5w6lkp</td></tr>\n",
       "<tr><td>H2O_cluster_total_nodes:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_free_memory:</td>\n",
       "<td>8 Gb</td></tr>\n",
       "<tr><td>H2O_cluster_total_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_allowed_cores:</td>\n",
       "<td>7</td></tr>\n",
       "<tr><td>H2O_cluster_status:</td>\n",
       "<td>locked, healthy</td></tr>\n",
       "<tr><td>H2O_connection_url:</td>\n",
       "<td>http://localhost:54321</td></tr>\n",
       "<tr><td>H2O_connection_proxy:</td>\n",
       "<td>{\"http\": null, \"https\": null}</td></tr>\n",
       "<tr><td>H2O_internal_security:</td>\n",
       "<td>False</td></tr>\n",
       "<tr><td>Python_version:</td>\n",
       "<td>3.9.6 final</td></tr></table></div>"
      ],
      "text/plain": [
       "--------------------------  -----------------------------\n",
       "H2O_cluster_uptime:         03 secs\n",
       "H2O_cluster_timezone:       Europe/Prague\n",
       "H2O_data_parsing_timezone:  UTC\n",
       "H2O_cluster_version:        3.37.0.99999\n",
       "H2O_cluster_version_age:    56 minutes\n",
       "H2O_cluster_name:           H2O_from_python_yuliia_5w6lkp\n",
       "H2O_cluster_total_nodes:    1\n",
       "H2O_cluster_free_memory:    8 Gb\n",
       "H2O_cluster_total_cores:    10\n",
       "H2O_cluster_allowed_cores:  7\n",
       "H2O_cluster_status:         locked, healthy\n",
       "H2O_connection_url:         http://localhost:54321\n",
       "H2O_connection_proxy:       {\"http\": null, \"https\": null}\n",
       "H2O_internal_security:      False\n",
       "Python_version:             3.9.6 final\n",
       "--------------------------  -----------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Parse progress: |████████████████████████████████████████████████████████████████| (done) 100%\n",
      "sdt Model Build progress: |██████████████████████████████████████████████████████| (done) 100%\n",
      "SDT Time: 2.382737159729004s\n",
      "drf Model Build progress: |██████████████████████████████████████████████████████| (done) 100%\n",
      "DRF Time: 1.8678603172302246s\n",
      "sdt prediction progress: |███████████████████████████████████████████████████████| (done) 100%\n",
      "drf prediction progress: |███████████████████████████████████████████████████████| (done) 100%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table>\n",
       "<thead>\n",
       "<tr><th style=\"text-align: right;\">  predict</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "</tbody>\n",
       "</table>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<bound method H2OFrame.type of >\n",
      "SDT 2.382737159729004s\n",
      "DRF 1.8678603172302246s\n",
      "Checking whether there is an H2O instance running at http://localhost:54321 ..... not found.\n",
      "Attempting to start a local H2O server...\n",
      "  Java Version: openjdk version \"17.0.4.1\" 2022-08-12 LTS; OpenJDK Runtime Environment Corretto-17.0.4.9.1 (build 17.0.4.1+9-LTS); OpenJDK 64-Bit Server VM Corretto-17.0.4.9.1 (build 17.0.4.1+9-LTS, mixed mode, sharing)\n",
      "  Starting server from /Users/yuliia/work/h2o-3/build/h2o.jar\n",
      "  Ice root: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmpl912826x\n",
      "  JVM stdout: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmpl912826x/h2o_yuliia_started_from_python.out\n",
      "  JVM stderr: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmpl912826x/h2o_yuliia_started_from_python.err\n",
      "  Server is running at http://127.0.0.1:54321\n",
      "Connecting to H2O server at http://127.0.0.1:54321 ... successful.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td>H2O_cluster_uptime:</td>\n",
       "<td>03 secs</td></tr>\n",
       "<tr><td>H2O_cluster_timezone:</td>\n",
       "<td>Europe/Prague</td></tr>\n",
       "<tr><td>H2O_data_parsing_timezone:</td>\n",
       "<td>UTC</td></tr>\n",
       "<tr><td>H2O_cluster_version:</td>\n",
       "<td>3.37.0.99999</td></tr>\n",
       "<tr><td>H2O_cluster_version_age:</td>\n",
       "<td>56 minutes </td></tr>\n",
       "<tr><td>H2O_cluster_name:</td>\n",
       "<td>H2O_from_python_yuliia_fapts7</td></tr>\n",
       "<tr><td>H2O_cluster_total_nodes:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_free_memory:</td>\n",
       "<td>8 Gb</td></tr>\n",
       "<tr><td>H2O_cluster_total_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_allowed_cores:</td>\n",
       "<td>6</td></tr>\n",
       "<tr><td>H2O_cluster_status:</td>\n",
       "<td>locked, healthy</td></tr>\n",
       "<tr><td>H2O_connection_url:</td>\n",
       "<td>http://127.0.0.1:54321</td></tr>\n",
       "<tr><td>H2O_connection_proxy:</td>\n",
       "<td>{\"http\": null, \"https\": null}</td></tr>\n",
       "<tr><td>H2O_internal_security:</td>\n",
       "<td>False</td></tr>\n",
       "<tr><td>Python_version:</td>\n",
       "<td>3.9.6 final</td></tr></table></div>"
      ],
      "text/plain": [
       "--------------------------  -----------------------------\n",
       "H2O_cluster_uptime:         03 secs\n",
       "H2O_cluster_timezone:       Europe/Prague\n",
       "H2O_data_parsing_timezone:  UTC\n",
       "H2O_cluster_version:        3.37.0.99999\n",
       "H2O_cluster_version_age:    56 minutes\n",
       "H2O_cluster_name:           H2O_from_python_yuliia_fapts7\n",
       "H2O_cluster_total_nodes:    1\n",
       "H2O_cluster_free_memory:    8 Gb\n",
       "H2O_cluster_total_cores:    10\n",
       "H2O_cluster_allowed_cores:  6\n",
       "H2O_cluster_status:         locked, healthy\n",
       "H2O_connection_url:         http://127.0.0.1:54321\n",
       "H2O_connection_proxy:       {\"http\": null, \"https\": null}\n",
       "H2O_internal_security:      False\n",
       "Python_version:             3.9.6 final\n",
       "--------------------------  -----------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Connecting to H2O server at http://localhost:54321 ... successful.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td>H2O_cluster_uptime:</td>\n",
       "<td>04 secs</td></tr>\n",
       "<tr><td>H2O_cluster_timezone:</td>\n",
       "<td>Europe/Prague</td></tr>\n",
       "<tr><td>H2O_data_parsing_timezone:</td>\n",
       "<td>UTC</td></tr>\n",
       "<tr><td>H2O_cluster_version:</td>\n",
       "<td>3.37.0.99999</td></tr>\n",
       "<tr><td>H2O_cluster_version_age:</td>\n",
       "<td>56 minutes </td></tr>\n",
       "<tr><td>H2O_cluster_name:</td>\n",
       "<td>H2O_from_python_yuliia_fapts7</td></tr>\n",
       "<tr><td>H2O_cluster_total_nodes:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_free_memory:</td>\n",
       "<td>8 Gb</td></tr>\n",
       "<tr><td>H2O_cluster_total_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_allowed_cores:</td>\n",
       "<td>6</td></tr>\n",
       "<tr><td>H2O_cluster_status:</td>\n",
       "<td>locked, healthy</td></tr>\n",
       "<tr><td>H2O_connection_url:</td>\n",
       "<td>http://localhost:54321</td></tr>\n",
       "<tr><td>H2O_connection_proxy:</td>\n",
       "<td>{\"http\": null, \"https\": null}</td></tr>\n",
       "<tr><td>H2O_internal_security:</td>\n",
       "<td>False</td></tr>\n",
       "<tr><td>Python_version:</td>\n",
       "<td>3.9.6 final</td></tr></table></div>"
      ],
      "text/plain": [
       "--------------------------  -----------------------------\n",
       "H2O_cluster_uptime:         04 secs\n",
       "H2O_cluster_timezone:       Europe/Prague\n",
       "H2O_data_parsing_timezone:  UTC\n",
       "H2O_cluster_version:        3.37.0.99999\n",
       "H2O_cluster_version_age:    56 minutes\n",
       "H2O_cluster_name:           H2O_from_python_yuliia_fapts7\n",
       "H2O_cluster_total_nodes:    1\n",
       "H2O_cluster_free_memory:    8 Gb\n",
       "H2O_cluster_total_cores:    10\n",
       "H2O_cluster_allowed_cores:  6\n",
       "H2O_cluster_status:         locked, healthy\n",
       "H2O_connection_url:         http://localhost:54321\n",
       "H2O_connection_proxy:       {\"http\": null, \"https\": null}\n",
       "H2O_internal_security:      False\n",
       "Python_version:             3.9.6 final\n",
       "--------------------------  -----------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Parse progress: |████████████████████████████████████████████████████████████████| (done) 100%\n",
      "sdt Model Build progress: |██████████████████████████████████████████████████████| (done) 100%\n",
      "SDT Time: 2.21657395362854s\n",
      "drf Model Build progress: |██████████████████████████████████████████████████████| (done) 100%\n",
      "DRF Time: 3.0292348861694336s\n",
      "sdt prediction progress: |███████████████████████████████████████████████████████| (done) 100%\n",
      "drf prediction progress: |███████████████████████████████████████████████████████| (done) 100%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table>\n",
       "<thead>\n",
       "<tr><th style=\"text-align: right;\">  predict</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "</tbody>\n",
       "</table>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<bound method H2OFrame.type of >\n",
      "SDT 2.21657395362854s\n",
      "DRF 3.0292348861694336s\n",
      "Checking whether there is an H2O instance running at http://localhost:54321 ..... not found.\n",
      "Attempting to start a local H2O server...\n",
      "  Java Version: openjdk version \"17.0.4.1\" 2022-08-12 LTS; OpenJDK Runtime Environment Corretto-17.0.4.9.1 (build 17.0.4.1+9-LTS); OpenJDK 64-Bit Server VM Corretto-17.0.4.9.1 (build 17.0.4.1+9-LTS, mixed mode, sharing)\n",
      "  Starting server from /Users/yuliia/work/h2o-3/build/h2o.jar\n",
      "  Ice root: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmpbinrhj8k\n",
      "  JVM stdout: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmpbinrhj8k/h2o_yuliia_started_from_python.out\n",
      "  JVM stderr: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmpbinrhj8k/h2o_yuliia_started_from_python.err\n",
      "  Server is running at http://127.0.0.1:54321\n",
      "Connecting to H2O server at http://127.0.0.1:54321 ... successful.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td>H2O_cluster_uptime:</td>\n",
       "<td>03 secs</td></tr>\n",
       "<tr><td>H2O_cluster_timezone:</td>\n",
       "<td>Europe/Prague</td></tr>\n",
       "<tr><td>H2O_data_parsing_timezone:</td>\n",
       "<td>UTC</td></tr>\n",
       "<tr><td>H2O_cluster_version:</td>\n",
       "<td>3.37.0.99999</td></tr>\n",
       "<tr><td>H2O_cluster_version_age:</td>\n",
       "<td>57 minutes </td></tr>\n",
       "<tr><td>H2O_cluster_name:</td>\n",
       "<td>H2O_from_python_yuliia_gofmyh</td></tr>\n",
       "<tr><td>H2O_cluster_total_nodes:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_free_memory:</td>\n",
       "<td>8 Gb</td></tr>\n",
       "<tr><td>H2O_cluster_total_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_allowed_cores:</td>\n",
       "<td>5</td></tr>\n",
       "<tr><td>H2O_cluster_status:</td>\n",
       "<td>locked, healthy</td></tr>\n",
       "<tr><td>H2O_connection_url:</td>\n",
       "<td>http://127.0.0.1:54321</td></tr>\n",
       "<tr><td>H2O_connection_proxy:</td>\n",
       "<td>{\"http\": null, \"https\": null}</td></tr>\n",
       "<tr><td>H2O_internal_security:</td>\n",
       "<td>False</td></tr>\n",
       "<tr><td>Python_version:</td>\n",
       "<td>3.9.6 final</td></tr></table></div>"
      ],
      "text/plain": [
       "--------------------------  -----------------------------\n",
       "H2O_cluster_uptime:         03 secs\n",
       "H2O_cluster_timezone:       Europe/Prague\n",
       "H2O_data_parsing_timezone:  UTC\n",
       "H2O_cluster_version:        3.37.0.99999\n",
       "H2O_cluster_version_age:    57 minutes\n",
       "H2O_cluster_name:           H2O_from_python_yuliia_gofmyh\n",
       "H2O_cluster_total_nodes:    1\n",
       "H2O_cluster_free_memory:    8 Gb\n",
       "H2O_cluster_total_cores:    10\n",
       "H2O_cluster_allowed_cores:  5\n",
       "H2O_cluster_status:         locked, healthy\n",
       "H2O_connection_url:         http://127.0.0.1:54321\n",
       "H2O_connection_proxy:       {\"http\": null, \"https\": null}\n",
       "H2O_internal_security:      False\n",
       "Python_version:             3.9.6 final\n",
       "--------------------------  -----------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Connecting to H2O server at http://localhost:54321 ... successful.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td>H2O_cluster_uptime:</td>\n",
       "<td>03 secs</td></tr>\n",
       "<tr><td>H2O_cluster_timezone:</td>\n",
       "<td>Europe/Prague</td></tr>\n",
       "<tr><td>H2O_data_parsing_timezone:</td>\n",
       "<td>UTC</td></tr>\n",
       "<tr><td>H2O_cluster_version:</td>\n",
       "<td>3.37.0.99999</td></tr>\n",
       "<tr><td>H2O_cluster_version_age:</td>\n",
       "<td>57 minutes </td></tr>\n",
       "<tr><td>H2O_cluster_name:</td>\n",
       "<td>H2O_from_python_yuliia_gofmyh</td></tr>\n",
       "<tr><td>H2O_cluster_total_nodes:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_free_memory:</td>\n",
       "<td>8 Gb</td></tr>\n",
       "<tr><td>H2O_cluster_total_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_allowed_cores:</td>\n",
       "<td>5</td></tr>\n",
       "<tr><td>H2O_cluster_status:</td>\n",
       "<td>locked, healthy</td></tr>\n",
       "<tr><td>H2O_connection_url:</td>\n",
       "<td>http://localhost:54321</td></tr>\n",
       "<tr><td>H2O_connection_proxy:</td>\n",
       "<td>{\"http\": null, \"https\": null}</td></tr>\n",
       "<tr><td>H2O_internal_security:</td>\n",
       "<td>False</td></tr>\n",
       "<tr><td>Python_version:</td>\n",
       "<td>3.9.6 final</td></tr></table></div>"
      ],
      "text/plain": [
       "--------------------------  -----------------------------\n",
       "H2O_cluster_uptime:         03 secs\n",
       "H2O_cluster_timezone:       Europe/Prague\n",
       "H2O_data_parsing_timezone:  UTC\n",
       "H2O_cluster_version:        3.37.0.99999\n",
       "H2O_cluster_version_age:    57 minutes\n",
       "H2O_cluster_name:           H2O_from_python_yuliia_gofmyh\n",
       "H2O_cluster_total_nodes:    1\n",
       "H2O_cluster_free_memory:    8 Gb\n",
       "H2O_cluster_total_cores:    10\n",
       "H2O_cluster_allowed_cores:  5\n",
       "H2O_cluster_status:         locked, healthy\n",
       "H2O_connection_url:         http://localhost:54321\n",
       "H2O_connection_proxy:       {\"http\": null, \"https\": null}\n",
       "H2O_internal_security:      False\n",
       "Python_version:             3.9.6 final\n",
       "--------------------------  -----------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Parse progress: |████████████████████████████████████████████████████████████████| (done) 100%\n",
      "sdt Model Build progress: |██████████████████████████████████████████████████████| (done) 100%\n",
      "SDT Time: 2.6268322467803955s\n",
      "drf Model Build progress: |██████████████████████████████████████████████████████| (done) 100%\n",
      "DRF Time: 1.8862531185150146s\n",
      "sdt prediction progress: |███████████████████████████████████████████████████████| (done) 100%\n",
      "drf prediction progress: |███████████████████████████████████████████████████████| (done) 100%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table>\n",
       "<thead>\n",
       "<tr><th style=\"text-align: right;\">  predict</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "</tbody>\n",
       "</table>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<bound method H2OFrame.type of >\n",
      "SDT 2.6268322467803955s\n",
      "DRF 1.8862531185150146s\n",
      "Checking whether there is an H2O instance running at http://localhost:54321 ..... not found.\n",
      "Attempting to start a local H2O server...\n",
      "  Java Version: openjdk version \"17.0.4.1\" 2022-08-12 LTS; OpenJDK Runtime Environment Corretto-17.0.4.9.1 (build 17.0.4.1+9-LTS); OpenJDK 64-Bit Server VM Corretto-17.0.4.9.1 (build 17.0.4.1+9-LTS, mixed mode, sharing)\n",
      "  Starting server from /Users/yuliia/work/h2o-3/build/h2o.jar\n",
      "  Ice root: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmp6u4su6jg\n",
      "  JVM stdout: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmp6u4su6jg/h2o_yuliia_started_from_python.out\n",
      "  JVM stderr: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmp6u4su6jg/h2o_yuliia_started_from_python.err\n",
      "  Server is running at http://127.0.0.1:54321\n",
      "Connecting to H2O server at http://127.0.0.1:54321 ... successful.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td>H2O_cluster_uptime:</td>\n",
       "<td>03 secs</td></tr>\n",
       "<tr><td>H2O_cluster_timezone:</td>\n",
       "<td>Europe/Prague</td></tr>\n",
       "<tr><td>H2O_data_parsing_timezone:</td>\n",
       "<td>UTC</td></tr>\n",
       "<tr><td>H2O_cluster_version:</td>\n",
       "<td>3.37.0.99999</td></tr>\n",
       "<tr><td>H2O_cluster_version_age:</td>\n",
       "<td>57 minutes </td></tr>\n",
       "<tr><td>H2O_cluster_name:</td>\n",
       "<td>H2O_from_python_yuliia_bpjrkl</td></tr>\n",
       "<tr><td>H2O_cluster_total_nodes:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_free_memory:</td>\n",
       "<td>8 Gb</td></tr>\n",
       "<tr><td>H2O_cluster_total_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_allowed_cores:</td>\n",
       "<td>4</td></tr>\n",
       "<tr><td>H2O_cluster_status:</td>\n",
       "<td>locked, healthy</td></tr>\n",
       "<tr><td>H2O_connection_url:</td>\n",
       "<td>http://127.0.0.1:54321</td></tr>\n",
       "<tr><td>H2O_connection_proxy:</td>\n",
       "<td>{\"http\": null, \"https\": null}</td></tr>\n",
       "<tr><td>H2O_internal_security:</td>\n",
       "<td>False</td></tr>\n",
       "<tr><td>Python_version:</td>\n",
       "<td>3.9.6 final</td></tr></table></div>"
      ],
      "text/plain": [
       "--------------------------  -----------------------------\n",
       "H2O_cluster_uptime:         03 secs\n",
       "H2O_cluster_timezone:       Europe/Prague\n",
       "H2O_data_parsing_timezone:  UTC\n",
       "H2O_cluster_version:        3.37.0.99999\n",
       "H2O_cluster_version_age:    57 minutes\n",
       "H2O_cluster_name:           H2O_from_python_yuliia_bpjrkl\n",
       "H2O_cluster_total_nodes:    1\n",
       "H2O_cluster_free_memory:    8 Gb\n",
       "H2O_cluster_total_cores:    10\n",
       "H2O_cluster_allowed_cores:  4\n",
       "H2O_cluster_status:         locked, healthy\n",
       "H2O_connection_url:         http://127.0.0.1:54321\n",
       "H2O_connection_proxy:       {\"http\": null, \"https\": null}\n",
       "H2O_internal_security:      False\n",
       "Python_version:             3.9.6 final\n",
       "--------------------------  -----------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Connecting to H2O server at http://localhost:54321 ... successful.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td>H2O_cluster_uptime:</td>\n",
       "<td>03 secs</td></tr>\n",
       "<tr><td>H2O_cluster_timezone:</td>\n",
       "<td>Europe/Prague</td></tr>\n",
       "<tr><td>H2O_data_parsing_timezone:</td>\n",
       "<td>UTC</td></tr>\n",
       "<tr><td>H2O_cluster_version:</td>\n",
       "<td>3.37.0.99999</td></tr>\n",
       "<tr><td>H2O_cluster_version_age:</td>\n",
       "<td>57 minutes </td></tr>\n",
       "<tr><td>H2O_cluster_name:</td>\n",
       "<td>H2O_from_python_yuliia_bpjrkl</td></tr>\n",
       "<tr><td>H2O_cluster_total_nodes:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_free_memory:</td>\n",
       "<td>8 Gb</td></tr>\n",
       "<tr><td>H2O_cluster_total_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_allowed_cores:</td>\n",
       "<td>4</td></tr>\n",
       "<tr><td>H2O_cluster_status:</td>\n",
       "<td>locked, healthy</td></tr>\n",
       "<tr><td>H2O_connection_url:</td>\n",
       "<td>http://localhost:54321</td></tr>\n",
       "<tr><td>H2O_connection_proxy:</td>\n",
       "<td>{\"http\": null, \"https\": null}</td></tr>\n",
       "<tr><td>H2O_internal_security:</td>\n",
       "<td>False</td></tr>\n",
       "<tr><td>Python_version:</td>\n",
       "<td>3.9.6 final</td></tr></table></div>"
      ],
      "text/plain": [
       "--------------------------  -----------------------------\n",
       "H2O_cluster_uptime:         03 secs\n",
       "H2O_cluster_timezone:       Europe/Prague\n",
       "H2O_data_parsing_timezone:  UTC\n",
       "H2O_cluster_version:        3.37.0.99999\n",
       "H2O_cluster_version_age:    57 minutes\n",
       "H2O_cluster_name:           H2O_from_python_yuliia_bpjrkl\n",
       "H2O_cluster_total_nodes:    1\n",
       "H2O_cluster_free_memory:    8 Gb\n",
       "H2O_cluster_total_cores:    10\n",
       "H2O_cluster_allowed_cores:  4\n",
       "H2O_cluster_status:         locked, healthy\n",
       "H2O_connection_url:         http://localhost:54321\n",
       "H2O_connection_proxy:       {\"http\": null, \"https\": null}\n",
       "H2O_internal_security:      False\n",
       "Python_version:             3.9.6 final\n",
       "--------------------------  -----------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Parse progress: |████████████████████████████████████████████████████████████████| (done) 100%\n",
      "sdt Model Build progress: |██████████████████████████████████████████████████████| (done) 100%\n",
      "SDT Time: 2.6700799465179443s\n",
      "drf Model Build progress: |██████████████████████████████████████████████████████| (done) 100%\n",
      "DRF Time: 1.4717860221862793s\n",
      "sdt prediction progress: |███████████████████████████████████████████████████████| (done) 100%\n",
      "drf prediction progress: |███████████████████████████████████████████████████████| (done) 100%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table>\n",
       "<thead>\n",
       "<tr><th style=\"text-align: right;\">  predict</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "</tbody>\n",
       "</table>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<bound method H2OFrame.type of >\n",
      "SDT 2.6700799465179443s\n",
      "DRF 1.4717860221862793s\n",
      "Checking whether there is an H2O instance running at http://localhost:54321 ..... not found.\n",
      "Attempting to start a local H2O server...\n",
      "  Java Version: openjdk version \"17.0.4.1\" 2022-08-12 LTS; OpenJDK Runtime Environment Corretto-17.0.4.9.1 (build 17.0.4.1+9-LTS); OpenJDK 64-Bit Server VM Corretto-17.0.4.9.1 (build 17.0.4.1+9-LTS, mixed mode, sharing)\n",
      "  Starting server from /Users/yuliia/work/h2o-3/build/h2o.jar\n",
      "  Ice root: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmp7uj60p_c\n",
      "  JVM stdout: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmp7uj60p_c/h2o_yuliia_started_from_python.out\n",
      "  JVM stderr: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmp7uj60p_c/h2o_yuliia_started_from_python.err\n",
      "  Server is running at http://127.0.0.1:54321\n",
      "Connecting to H2O server at http://127.0.0.1:54321 ... successful.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td>H2O_cluster_uptime:</td>\n",
       "<td>03 secs</td></tr>\n",
       "<tr><td>H2O_cluster_timezone:</td>\n",
       "<td>Europe/Prague</td></tr>\n",
       "<tr><td>H2O_data_parsing_timezone:</td>\n",
       "<td>UTC</td></tr>\n",
       "<tr><td>H2O_cluster_version:</td>\n",
       "<td>3.37.0.99999</td></tr>\n",
       "<tr><td>H2O_cluster_version_age:</td>\n",
       "<td>57 minutes </td></tr>\n",
       "<tr><td>H2O_cluster_name:</td>\n",
       "<td>H2O_from_python_yuliia_st0e8z</td></tr>\n",
       "<tr><td>H2O_cluster_total_nodes:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_free_memory:</td>\n",
       "<td>8 Gb</td></tr>\n",
       "<tr><td>H2O_cluster_total_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_allowed_cores:</td>\n",
       "<td>3</td></tr>\n",
       "<tr><td>H2O_cluster_status:</td>\n",
       "<td>locked, healthy</td></tr>\n",
       "<tr><td>H2O_connection_url:</td>\n",
       "<td>http://127.0.0.1:54321</td></tr>\n",
       "<tr><td>H2O_connection_proxy:</td>\n",
       "<td>{\"http\": null, \"https\": null}</td></tr>\n",
       "<tr><td>H2O_internal_security:</td>\n",
       "<td>False</td></tr>\n",
       "<tr><td>Python_version:</td>\n",
       "<td>3.9.6 final</td></tr></table></div>"
      ],
      "text/plain": [
       "--------------------------  -----------------------------\n",
       "H2O_cluster_uptime:         03 secs\n",
       "H2O_cluster_timezone:       Europe/Prague\n",
       "H2O_data_parsing_timezone:  UTC\n",
       "H2O_cluster_version:        3.37.0.99999\n",
       "H2O_cluster_version_age:    57 minutes\n",
       "H2O_cluster_name:           H2O_from_python_yuliia_st0e8z\n",
       "H2O_cluster_total_nodes:    1\n",
       "H2O_cluster_free_memory:    8 Gb\n",
       "H2O_cluster_total_cores:    10\n",
       "H2O_cluster_allowed_cores:  3\n",
       "H2O_cluster_status:         locked, healthy\n",
       "H2O_connection_url:         http://127.0.0.1:54321\n",
       "H2O_connection_proxy:       {\"http\": null, \"https\": null}\n",
       "H2O_internal_security:      False\n",
       "Python_version:             3.9.6 final\n",
       "--------------------------  -----------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Connecting to H2O server at http://localhost:54321 ... successful.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td>H2O_cluster_uptime:</td>\n",
       "<td>03 secs</td></tr>\n",
       "<tr><td>H2O_cluster_timezone:</td>\n",
       "<td>Europe/Prague</td></tr>\n",
       "<tr><td>H2O_data_parsing_timezone:</td>\n",
       "<td>UTC</td></tr>\n",
       "<tr><td>H2O_cluster_version:</td>\n",
       "<td>3.37.0.99999</td></tr>\n",
       "<tr><td>H2O_cluster_version_age:</td>\n",
       "<td>57 minutes </td></tr>\n",
       "<tr><td>H2O_cluster_name:</td>\n",
       "<td>H2O_from_python_yuliia_st0e8z</td></tr>\n",
       "<tr><td>H2O_cluster_total_nodes:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_free_memory:</td>\n",
       "<td>8 Gb</td></tr>\n",
       "<tr><td>H2O_cluster_total_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_allowed_cores:</td>\n",
       "<td>3</td></tr>\n",
       "<tr><td>H2O_cluster_status:</td>\n",
       "<td>locked, healthy</td></tr>\n",
       "<tr><td>H2O_connection_url:</td>\n",
       "<td>http://localhost:54321</td></tr>\n",
       "<tr><td>H2O_connection_proxy:</td>\n",
       "<td>{\"http\": null, \"https\": null}</td></tr>\n",
       "<tr><td>H2O_internal_security:</td>\n",
       "<td>False</td></tr>\n",
       "<tr><td>Python_version:</td>\n",
       "<td>3.9.6 final</td></tr></table></div>"
      ],
      "text/plain": [
       "--------------------------  -----------------------------\n",
       "H2O_cluster_uptime:         03 secs\n",
       "H2O_cluster_timezone:       Europe/Prague\n",
       "H2O_data_parsing_timezone:  UTC\n",
       "H2O_cluster_version:        3.37.0.99999\n",
       "H2O_cluster_version_age:    57 minutes\n",
       "H2O_cluster_name:           H2O_from_python_yuliia_st0e8z\n",
       "H2O_cluster_total_nodes:    1\n",
       "H2O_cluster_free_memory:    8 Gb\n",
       "H2O_cluster_total_cores:    10\n",
       "H2O_cluster_allowed_cores:  3\n",
       "H2O_cluster_status:         locked, healthy\n",
       "H2O_connection_url:         http://localhost:54321\n",
       "H2O_connection_proxy:       {\"http\": null, \"https\": null}\n",
       "H2O_internal_security:      False\n",
       "Python_version:             3.9.6 final\n",
       "--------------------------  -----------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Parse progress: |████████████████████████████████████████████████████████████████| (done) 100%\n",
      "sdt Model Build progress: |██████████████████████████████████████████████████████| (done) 100%\n",
      "SDT Time: 2.6429388523101807s\n",
      "drf Model Build progress: |██████████████████████████████████████████████████████| (done) 100%\n",
      "DRF Time: 1.4609599113464355s\n",
      "sdt prediction progress: |███████████████████████████████████████████████████████| (done) 100%\n",
      "drf prediction progress: |███████████████████████████████████████████████████████| (done) 100%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table>\n",
       "<thead>\n",
       "<tr><th style=\"text-align: right;\">  predict</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "</tbody>\n",
       "</table>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<bound method H2OFrame.type of >\n",
      "SDT 2.6429388523101807s\n",
      "DRF 1.4609599113464355s\n",
      "Checking whether there is an H2O instance running at http://localhost:54321 ..... not found.\n",
      "Attempting to start a local H2O server...\n",
      "  Java Version: openjdk version \"17.0.4.1\" 2022-08-12 LTS; OpenJDK Runtime Environment Corretto-17.0.4.9.1 (build 17.0.4.1+9-LTS); OpenJDK 64-Bit Server VM Corretto-17.0.4.9.1 (build 17.0.4.1+9-LTS, mixed mode, sharing)\n",
      "  Starting server from /Users/yuliia/work/h2o-3/build/h2o.jar\n",
      "  Ice root: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmpaf016bss\n",
      "  JVM stdout: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmpaf016bss/h2o_yuliia_started_from_python.out\n",
      "  JVM stderr: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmpaf016bss/h2o_yuliia_started_from_python.err\n",
      "  Server is running at http://127.0.0.1:54321\n",
      "Connecting to H2O server at http://127.0.0.1:54321 ... successful.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td>H2O_cluster_uptime:</td>\n",
       "<td>03 secs</td></tr>\n",
       "<tr><td>H2O_cluster_timezone:</td>\n",
       "<td>Europe/Prague</td></tr>\n",
       "<tr><td>H2O_data_parsing_timezone:</td>\n",
       "<td>UTC</td></tr>\n",
       "<tr><td>H2O_cluster_version:</td>\n",
       "<td>3.37.0.99999</td></tr>\n",
       "<tr><td>H2O_cluster_version_age:</td>\n",
       "<td>58 minutes </td></tr>\n",
       "<tr><td>H2O_cluster_name:</td>\n",
       "<td>H2O_from_python_yuliia_43t3os</td></tr>\n",
       "<tr><td>H2O_cluster_total_nodes:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_free_memory:</td>\n",
       "<td>8 Gb</td></tr>\n",
       "<tr><td>H2O_cluster_total_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_allowed_cores:</td>\n",
       "<td>2</td></tr>\n",
       "<tr><td>H2O_cluster_status:</td>\n",
       "<td>locked, healthy</td></tr>\n",
       "<tr><td>H2O_connection_url:</td>\n",
       "<td>http://127.0.0.1:54321</td></tr>\n",
       "<tr><td>H2O_connection_proxy:</td>\n",
       "<td>{\"http\": null, \"https\": null}</td></tr>\n",
       "<tr><td>H2O_internal_security:</td>\n",
       "<td>False</td></tr>\n",
       "<tr><td>Python_version:</td>\n",
       "<td>3.9.6 final</td></tr></table></div>"
      ],
      "text/plain": [
       "--------------------------  -----------------------------\n",
       "H2O_cluster_uptime:         03 secs\n",
       "H2O_cluster_timezone:       Europe/Prague\n",
       "H2O_data_parsing_timezone:  UTC\n",
       "H2O_cluster_version:        3.37.0.99999\n",
       "H2O_cluster_version_age:    58 minutes\n",
       "H2O_cluster_name:           H2O_from_python_yuliia_43t3os\n",
       "H2O_cluster_total_nodes:    1\n",
       "H2O_cluster_free_memory:    8 Gb\n",
       "H2O_cluster_total_cores:    10\n",
       "H2O_cluster_allowed_cores:  2\n",
       "H2O_cluster_status:         locked, healthy\n",
       "H2O_connection_url:         http://127.0.0.1:54321\n",
       "H2O_connection_proxy:       {\"http\": null, \"https\": null}\n",
       "H2O_internal_security:      False\n",
       "Python_version:             3.9.6 final\n",
       "--------------------------  -----------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Connecting to H2O server at http://localhost:54321 ... successful.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td>H2O_cluster_uptime:</td>\n",
       "<td>03 secs</td></tr>\n",
       "<tr><td>H2O_cluster_timezone:</td>\n",
       "<td>Europe/Prague</td></tr>\n",
       "<tr><td>H2O_data_parsing_timezone:</td>\n",
       "<td>UTC</td></tr>\n",
       "<tr><td>H2O_cluster_version:</td>\n",
       "<td>3.37.0.99999</td></tr>\n",
       "<tr><td>H2O_cluster_version_age:</td>\n",
       "<td>58 minutes </td></tr>\n",
       "<tr><td>H2O_cluster_name:</td>\n",
       "<td>H2O_from_python_yuliia_43t3os</td></tr>\n",
       "<tr><td>H2O_cluster_total_nodes:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_free_memory:</td>\n",
       "<td>8 Gb</td></tr>\n",
       "<tr><td>H2O_cluster_total_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_allowed_cores:</td>\n",
       "<td>2</td></tr>\n",
       "<tr><td>H2O_cluster_status:</td>\n",
       "<td>locked, healthy</td></tr>\n",
       "<tr><td>H2O_connection_url:</td>\n",
       "<td>http://localhost:54321</td></tr>\n",
       "<tr><td>H2O_connection_proxy:</td>\n",
       "<td>{\"http\": null, \"https\": null}</td></tr>\n",
       "<tr><td>H2O_internal_security:</td>\n",
       "<td>False</td></tr>\n",
       "<tr><td>Python_version:</td>\n",
       "<td>3.9.6 final</td></tr></table></div>"
      ],
      "text/plain": [
       "--------------------------  -----------------------------\n",
       "H2O_cluster_uptime:         03 secs\n",
       "H2O_cluster_timezone:       Europe/Prague\n",
       "H2O_data_parsing_timezone:  UTC\n",
       "H2O_cluster_version:        3.37.0.99999\n",
       "H2O_cluster_version_age:    58 minutes\n",
       "H2O_cluster_name:           H2O_from_python_yuliia_43t3os\n",
       "H2O_cluster_total_nodes:    1\n",
       "H2O_cluster_free_memory:    8 Gb\n",
       "H2O_cluster_total_cores:    10\n",
       "H2O_cluster_allowed_cores:  2\n",
       "H2O_cluster_status:         locked, healthy\n",
       "H2O_connection_url:         http://localhost:54321\n",
       "H2O_connection_proxy:       {\"http\": null, \"https\": null}\n",
       "H2O_internal_security:      False\n",
       "Python_version:             3.9.6 final\n",
       "--------------------------  -----------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Parse progress: |████████████████████████████████████████████████████████████████| (done) 100%\n",
      "sdt Model Build progress: |██████████████████████████████████████████████████████| (done) 100%\n",
      "SDT Time: 3.651746988296509s\n",
      "drf Model Build progress: |██████████████████████████████████████████████████████| (done) 100%\n",
      "DRF Time: 2.5329573154449463s\n",
      "sdt prediction progress: |███████████████████████████████████████████████████████| (done) 100%\n",
      "drf prediction progress: |███████████████████████████████████████████████████████| (done) 100%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table>\n",
       "<thead>\n",
       "<tr><th style=\"text-align: right;\">  predict</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "</tbody>\n",
       "</table>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<bound method H2OFrame.type of >\n",
      "SDT 3.651746988296509s\n",
      "DRF 2.5329573154449463s\n",
      "Checking whether there is an H2O instance running at http://localhost:54321 ..... not found.\n",
      "Attempting to start a local H2O server...\n",
      "  Java Version: openjdk version \"17.0.4.1\" 2022-08-12 LTS; OpenJDK Runtime Environment Corretto-17.0.4.9.1 (build 17.0.4.1+9-LTS); OpenJDK 64-Bit Server VM Corretto-17.0.4.9.1 (build 17.0.4.1+9-LTS, mixed mode, sharing)\n",
      "  Starting server from /Users/yuliia/work/h2o-3/build/h2o.jar\n",
      "  Ice root: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmpyd59hcml\n",
      "  JVM stdout: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmpyd59hcml/h2o_yuliia_started_from_python.out\n",
      "  JVM stderr: /var/folders/g0/z3yr0fjx3qqbmhvs9jhqsq_r0000gn/T/tmpyd59hcml/h2o_yuliia_started_from_python.err\n",
      "  Server is running at http://127.0.0.1:54321\n",
      "Connecting to H2O server at http://127.0.0.1:54321 ... successful.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td>H2O_cluster_uptime:</td>\n",
       "<td>03 secs</td></tr>\n",
       "<tr><td>H2O_cluster_timezone:</td>\n",
       "<td>Europe/Prague</td></tr>\n",
       "<tr><td>H2O_data_parsing_timezone:</td>\n",
       "<td>UTC</td></tr>\n",
       "<tr><td>H2O_cluster_version:</td>\n",
       "<td>3.37.0.99999</td></tr>\n",
       "<tr><td>H2O_cluster_version_age:</td>\n",
       "<td>58 minutes </td></tr>\n",
       "<tr><td>H2O_cluster_name:</td>\n",
       "<td>H2O_from_python_yuliia_qqq3k1</td></tr>\n",
       "<tr><td>H2O_cluster_total_nodes:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_free_memory:</td>\n",
       "<td>8 Gb</td></tr>\n",
       "<tr><td>H2O_cluster_total_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_allowed_cores:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_status:</td>\n",
       "<td>locked, healthy</td></tr>\n",
       "<tr><td>H2O_connection_url:</td>\n",
       "<td>http://127.0.0.1:54321</td></tr>\n",
       "<tr><td>H2O_connection_proxy:</td>\n",
       "<td>{\"http\": null, \"https\": null}</td></tr>\n",
       "<tr><td>H2O_internal_security:</td>\n",
       "<td>False</td></tr>\n",
       "<tr><td>Python_version:</td>\n",
       "<td>3.9.6 final</td></tr></table></div>"
      ],
      "text/plain": [
       "--------------------------  -----------------------------\n",
       "H2O_cluster_uptime:         03 secs\n",
       "H2O_cluster_timezone:       Europe/Prague\n",
       "H2O_data_parsing_timezone:  UTC\n",
       "H2O_cluster_version:        3.37.0.99999\n",
       "H2O_cluster_version_age:    58 minutes\n",
       "H2O_cluster_name:           H2O_from_python_yuliia_qqq3k1\n",
       "H2O_cluster_total_nodes:    1\n",
       "H2O_cluster_free_memory:    8 Gb\n",
       "H2O_cluster_total_cores:    10\n",
       "H2O_cluster_allowed_cores:  1\n",
       "H2O_cluster_status:         locked, healthy\n",
       "H2O_connection_url:         http://127.0.0.1:54321\n",
       "H2O_connection_proxy:       {\"http\": null, \"https\": null}\n",
       "H2O_internal_security:      False\n",
       "Python_version:             3.9.6 final\n",
       "--------------------------  -----------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Connecting to H2O server at http://localhost:54321 ... successful.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td>H2O_cluster_uptime:</td>\n",
       "<td>03 secs</td></tr>\n",
       "<tr><td>H2O_cluster_timezone:</td>\n",
       "<td>Europe/Prague</td></tr>\n",
       "<tr><td>H2O_data_parsing_timezone:</td>\n",
       "<td>UTC</td></tr>\n",
       "<tr><td>H2O_cluster_version:</td>\n",
       "<td>3.37.0.99999</td></tr>\n",
       "<tr><td>H2O_cluster_version_age:</td>\n",
       "<td>58 minutes </td></tr>\n",
       "<tr><td>H2O_cluster_name:</td>\n",
       "<td>H2O_from_python_yuliia_qqq3k1</td></tr>\n",
       "<tr><td>H2O_cluster_total_nodes:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_free_memory:</td>\n",
       "<td>8 Gb</td></tr>\n",
       "<tr><td>H2O_cluster_total_cores:</td>\n",
       "<td>10</td></tr>\n",
       "<tr><td>H2O_cluster_allowed_cores:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_status:</td>\n",
       "<td>locked, healthy</td></tr>\n",
       "<tr><td>H2O_connection_url:</td>\n",
       "<td>http://localhost:54321</td></tr>\n",
       "<tr><td>H2O_connection_proxy:</td>\n",
       "<td>{\"http\": null, \"https\": null}</td></tr>\n",
       "<tr><td>H2O_internal_security:</td>\n",
       "<td>False</td></tr>\n",
       "<tr><td>Python_version:</td>\n",
       "<td>3.9.6 final</td></tr></table></div>"
      ],
      "text/plain": [
       "--------------------------  -----------------------------\n",
       "H2O_cluster_uptime:         03 secs\n",
       "H2O_cluster_timezone:       Europe/Prague\n",
       "H2O_data_parsing_timezone:  UTC\n",
       "H2O_cluster_version:        3.37.0.99999\n",
       "H2O_cluster_version_age:    58 minutes\n",
       "H2O_cluster_name:           H2O_from_python_yuliia_qqq3k1\n",
       "H2O_cluster_total_nodes:    1\n",
       "H2O_cluster_free_memory:    8 Gb\n",
       "H2O_cluster_total_cores:    10\n",
       "H2O_cluster_allowed_cores:  1\n",
       "H2O_cluster_status:         locked, healthy\n",
       "H2O_connection_url:         http://localhost:54321\n",
       "H2O_connection_proxy:       {\"http\": null, \"https\": null}\n",
       "H2O_internal_security:      False\n",
       "Python_version:             3.9.6 final\n",
       "--------------------------  -----------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Parse progress: |████████████████████████████████████████████████████████████████| (done) 100%\n",
      "sdt Model Build progress: |██████████████████████████████████████████████████████| (done) 100%\n",
      "SDT Time: 6.143235206604004s\n",
      "drf Model Build progress: |██████████████████████████████████████████████████████| (done) 100%\n",
      "DRF Time: 1.4093220233917236s\n",
      "sdt prediction progress: |███████████████████████████████████████████████████████| (done) 100%\n",
      "drf prediction progress: |███████████████████████████████████████████████████████| (done) 100%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table>\n",
       "<thead>\n",
       "<tr><th style=\"text-align: right;\">  predict</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        0</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">        1</td></tr>\n",
       "</tbody>\n",
       "</table>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<bound method H2OFrame.type of >\n",
      "SDT 6.143235206604004s\n",
      "DRF 1.4093220233917236s\n",
      "12 - SDT = 0.9183011054992676, DRF = 1.0399630069732666\n",
      "11 - SDT = 2.3876049518585205, DRF = 2.5478038787841797\n",
      "10 - SDT = 2.3705079555511475, DRF = 2.7473669052124023\n",
      "9 - SDT = 2.408784866333008, DRF = 2.3583719730377197\n",
      "8 - SDT = 2.3705830574035645, DRF = 2.1372690200805664\n",
      "7 - SDT = 2.382737159729004, DRF = 1.8678603172302246\n",
      "6 - SDT = 2.21657395362854, DRF = 3.0292348861694336\n",
      "5 - SDT = 2.6268322467803955, DRF = 1.8862531185150146\n",
      "4 - SDT = 2.6700799465179443, DRF = 1.4717860221862793\n",
      "3 - SDT = 2.6429388523101807, DRF = 1.4609599113464355\n",
      "2 - SDT = 3.651746988296509, DRF = 2.5329573154449463\n",
      "1 - SDT = 6.143235206604004, DRF = 1.4093220233917236\n"
     ]
    }
   ],
   "source": [
    "X = pd.read_csv(DATA_PATH + \"Dataset1_train.csv\")\n",
    "sdt_time1, drf_time1 = run_benchmark(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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zAsvvOBy6nvs2LHUqlUr9+u+ffvStWtXXnnlFcLCwqhUqRIjR44kKyuLoUOHUqVKFSIjI5k0aZLL8Tdv3kzr1q3x9fWlQYMGLFiwwHT/hg0buO222wgICCAsLIwHH3yQQ4cO5d5/0003MWDAABISEqhatSqdOnXK933k5OQwcuRIIiMj8fHxoXHjxsyaNSv3fofDQWJiIiNHjsThcPDCCy+4HKNv374sWLCAt956C4fDgcPhYMeOHbn3JyYm0qxZMypWrEjr1q1JSkpy+T5++OGHREdH4+vrC8CxY8d45JFHqFatGkFBQdx8882sXbs293nbtm3jrrvuIiwsjICAAJo3b86cOXNMfR04cIC4uDj8/PyIjo7m888/N91vGAYvvPACNWvWxMfHh4iICAYOHJjv90lEyj+FVBGxPU9PT1555RXefvtt/vrrrys61m+//cbevXtZuHAhb7zxBiNGjODOO++kcuXKLFu2jMcff5zHHnvM5XWGDh3K4MGDWb16Na1atSIuLo7Dhw8DzgB3880306RJE1auXMmsWbPYv38/PXr0MB3j448/pkKFCixevJiJEyfm299bb73FmDFjeP3111m3bh2dOnWiS5cubN26FYCUlBTq16/P4MGDSUlJYciQIfkeo1WrVjz66KOkpKSQkpJCjRo1cu9/7rnnGDNmDCtXrsTLy4v+/fubnv/nn38ybdo0vv3229y5uN27d+fAgQP8/PPPJCYm0rRpU2655RaOHDkCQHp6Orfffjtz585l9erVdO7cmbi4OHbt2pV73L59+7J7927mzZvHN998w/jx4zlw4EDu/dOmTePNN9/kvffeY+vWrXz33XfExsZe9PMUkXLMEBGxsT59+hh33XWXYRiGccMNNxj9+/c3DMMwpk+fblz4T9iIESOMRo0amZ775ptvGlFRUaZjRUVFGdnZ2bm1unXrGm3bts39Oisry/D39ze++OILwzAMIzk52QCMUaNG5T4mMzPTiIyMNEaPHm0YhmG8+OKLRseOHU2vvXv3bgMwkpKSDMMwjPbt2xtNmjS55PuNiIgwXn75ZVOtefPmxpNPPpn7daNGjYwRI0Zc9Djt27c3Bg0aZKrNmzfPAIw5c+bk1n788UcDME6dOmUYhvP76O3tbRw4cCD3MYsWLTKCgoKM06dPm45Xu3Zt47333iuwh/r16xtvv/22YRiGkZSUZADG8uXLc+/ftGmTARhvvvmmYRiGMWbMGOPaa681MjIyLvreRMQ9aCRVRMqM0aNH8/HHH7Np06bLPkb9+vXx8Dj/T19YWJhptM7T05OQkBDTCB9Aq1atcv/by8uLZs2a5faxdu1a5s2bR0BAQO4tJiYGcJ4GP+f666+/aG+pqans3buXNm3amOpt2rS5ovecV8OGDXP/Ozw8HMD0fqOioqhWrVru12vXriU9PZ2QkBDTe0xOTs59f+np6QwZMoTrrruOSpUqERAQwKZNm3JHUjdt2oSXl5fpexATE0OlSpVyv+7evTunTp3i6quv5tFHH2X69OlkZWUV2/sWkbLFy+oGREQKq127dnTq1Il//vOf9O3b13Sfh4cHhmGYapmZmS7H8Pb2Nn3tcDjyreXk5BS6r/T0dOLi4hg9erTLfedCIIC/v3+hj1mSLny/51ZIuPD95u0zPT2d8PBw5s+f73KscyFzyJAhzJ49m9dff51rrrkGPz8/unXrVqQLr2rUqEFSUhJz5sxh9uzZPPnkk/znP/9hwYIFLp+RiJR/CqkiUqaMGjWKxo0bU7duXVO9WrVq7Nu3D8MwcoNXca5tunTpUtq1awdAVlYWiYmJDBgwAICmTZsybdo0atWqhZfX5f+zGhQUREREBIsXL6Z9+/a59cWLF9OiRYsiHatChQpkZ2dfdi8Xatq0Kfv27cPLy8t0IdqFFi9eTN++fbn77rsBZ7C98GKtmJiY3O9b8+bNAUhKSnJZs9XPz4+4uDji4uKIj48nJiaG9evX07Rp02J5LyJSduh0v4iUKbGxsfTu3Ztx48aZ6jfddBMHDx7ktddeY9u2bbz77rv8/PPPxfa67777LtOnT2fz5s3Ex8dz9OjR3AuO4uPjOXLkCL169WLFihVs27aNX375hX79+hU5KA4dOpTRo0fz1VdfkZSUxLBhw1izZg2DBg0q0nFq1arFsmXL2LFjB4cOHSrSyHBeHTp0oFWrVnTt2pVff/2VHTt2sGTJEp577jlWrlwJQJ06dXIvtFq7di3333+/6TXr1q1L586deeyxx1i2bBmJiYk88sgj+Pn55T5m8uTJfPTRR2zYsIHt27fz2Wef4efnR1RU1GX3LiJll0KqiJQ5I0eOdAld1113HePHj+fdd9+lUaNGLF++PN8r3y/XqFGjGDVqFI0aNeL3339n5syZVK1aFSB39DM7O5uOHTsSGxtLQkIClSpVMs1/LYyBAwfyzDPPMHjwYGJjY5k1axYzZ86kTp06RTrOkCFD8PT0pF69elSrVs10lX1RORwOfvrpJ9q1a0e/fv249tpr6dmzJzt37iQsLAyAN954g8qVK9O6dWvi4uLo1KmTy+jnpEmTiIiIoH379txzzz38/e9/JzQ0NPf+SpUq8cEHH9CmTRsaNmzInDlz+P7770t8LVgRsSeHkXcSl4iIiIiIxTSSKiIiIiK2o5AqIiIiIrajkCoiIiIitqOQKiIiIiK2o5AqIiIiIrajkCoiIiIitqOQKiIiIiK2o5AqIiIiIrajkCoiIiIitqOQKiIiIiK2o5AqIiIiIrbz/8coSNFfUWoAAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 800x1000 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_result(sdt_time1, drf_time1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "###### Big data and big dimension"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: '/Users/yuliia/work/h2o-3/benchmark_data/HIGGS_train_limited1.csv'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[9], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m X \u001b[38;5;241m=\u001b[39m \u001b[43mpd\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread_csv\u001b[49m\u001b[43m(\u001b[49m\u001b[43mDATA_PATH\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mHIGGS_train_limited1.csv\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m      2\u001b[0m sdt_time2, drf_time2 \u001b[38;5;241m=\u001b[39m run_benchmark(X)\n",
      "File \u001b[0;32m~/work/h2o-3/venv/lib/python3.9/site-packages/pandas/util/_decorators.py:211\u001b[0m, in \u001b[0;36mdeprecate_kwarg.<locals>._deprecate_kwarg.<locals>.wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m    209\u001b[0m     \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m    210\u001b[0m         kwargs[new_arg_name] \u001b[38;5;241m=\u001b[39m new_arg_value\n\u001b[0;32m--> 211\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
      "File \u001b[0;32m~/work/h2o-3/venv/lib/python3.9/site-packages/pandas/util/_decorators.py:317\u001b[0m, in \u001b[0;36mdeprecate_nonkeyword_arguments.<locals>.decorate.<locals>.wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m    311\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(args) \u001b[38;5;241m>\u001b[39m num_allow_args:\n\u001b[1;32m    312\u001b[0m     warnings\u001b[38;5;241m.\u001b[39mwarn(\n\u001b[1;32m    313\u001b[0m         msg\u001b[38;5;241m.\u001b[39mformat(arguments\u001b[38;5;241m=\u001b[39marguments),\n\u001b[1;32m    314\u001b[0m         \u001b[38;5;167;01mFutureWarning\u001b[39;00m,\n\u001b[1;32m    315\u001b[0m         stacklevel\u001b[38;5;241m=\u001b[39mfind_stack_level(inspect\u001b[38;5;241m.\u001b[39mcurrentframe()),\n\u001b[1;32m    316\u001b[0m     )\n\u001b[0;32m--> 317\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
      "File \u001b[0;32m~/work/h2o-3/venv/lib/python3.9/site-packages/pandas/io/parsers/readers.py:950\u001b[0m, in \u001b[0;36mread_csv\u001b[0;34m(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, encoding_errors, dialect, error_bad_lines, warn_bad_lines, on_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options)\u001b[0m\n\u001b[1;32m    935\u001b[0m kwds_defaults \u001b[38;5;241m=\u001b[39m _refine_defaults_read(\n\u001b[1;32m    936\u001b[0m     dialect,\n\u001b[1;32m    937\u001b[0m     delimiter,\n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m    946\u001b[0m     defaults\u001b[38;5;241m=\u001b[39m{\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdelimiter\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m,\u001b[39m\u001b[38;5;124m\"\u001b[39m},\n\u001b[1;32m    947\u001b[0m )\n\u001b[1;32m    948\u001b[0m kwds\u001b[38;5;241m.\u001b[39mupdate(kwds_defaults)\n\u001b[0;32m--> 950\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_read\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilepath_or_buffer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwds\u001b[49m\u001b[43m)\u001b[49m\n",
      "File \u001b[0;32m~/work/h2o-3/venv/lib/python3.9/site-packages/pandas/io/parsers/readers.py:605\u001b[0m, in \u001b[0;36m_read\u001b[0;34m(filepath_or_buffer, kwds)\u001b[0m\n\u001b[1;32m    602\u001b[0m _validate_names(kwds\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnames\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m))\n\u001b[1;32m    604\u001b[0m \u001b[38;5;66;03m# Create the parser.\u001b[39;00m\n\u001b[0;32m--> 605\u001b[0m parser \u001b[38;5;241m=\u001b[39m \u001b[43mTextFileReader\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilepath_or_buffer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwds\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    607\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m chunksize \u001b[38;5;129;01mor\u001b[39;00m iterator:\n\u001b[1;32m    608\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m parser\n",
      "File \u001b[0;32m~/work/h2o-3/venv/lib/python3.9/site-packages/pandas/io/parsers/readers.py:1442\u001b[0m, in \u001b[0;36mTextFileReader.__init__\u001b[0;34m(self, f, engine, **kwds)\u001b[0m\n\u001b[1;32m   1439\u001b[0m     \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39moptions[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhas_index_names\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m kwds[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhas_index_names\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m   1441\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles: IOHandles \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m-> 1442\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_engine \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_make_engine\u001b[49m\u001b[43m(\u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mengine\u001b[49m\u001b[43m)\u001b[49m\n",
      "File \u001b[0;32m~/work/h2o-3/venv/lib/python3.9/site-packages/pandas/io/parsers/readers.py:1729\u001b[0m, in \u001b[0;36mTextFileReader._make_engine\u001b[0;34m(self, f, engine)\u001b[0m\n\u001b[1;32m   1727\u001b[0m     is_text \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[1;32m   1728\u001b[0m     mode \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrb\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m-> 1729\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles \u001b[38;5;241m=\u001b[39m \u001b[43mget_handle\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m   1730\u001b[0m \u001b[43m    \u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1731\u001b[0m \u001b[43m    \u001b[49m\u001b[43mmode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1732\u001b[0m \u001b[43m    \u001b[49m\u001b[43mencoding\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mencoding\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1733\u001b[0m \u001b[43m    \u001b[49m\u001b[43mcompression\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mcompression\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1734\u001b[0m \u001b[43m    \u001b[49m\u001b[43mmemory_map\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmemory_map\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1735\u001b[0m \u001b[43m    \u001b[49m\u001b[43mis_text\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mis_text\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1736\u001b[0m \u001b[43m    \u001b[49m\u001b[43merrors\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mencoding_errors\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mstrict\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1737\u001b[0m \u001b[43m    \u001b[49m\u001b[43mstorage_options\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mstorage_options\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1738\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   1739\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m   1740\u001b[0m f \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles\u001b[38;5;241m.\u001b[39mhandle\n",
      "File \u001b[0;32m~/work/h2o-3/venv/lib/python3.9/site-packages/pandas/io/common.py:857\u001b[0m, in \u001b[0;36mget_handle\u001b[0;34m(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)\u001b[0m\n\u001b[1;32m    852\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(handle, \u001b[38;5;28mstr\u001b[39m):\n\u001b[1;32m    853\u001b[0m     \u001b[38;5;66;03m# Check whether the filename is to be opened in binary mode.\u001b[39;00m\n\u001b[1;32m    854\u001b[0m     \u001b[38;5;66;03m# Binary mode does not support 'encoding' and 'newline'.\u001b[39;00m\n\u001b[1;32m    855\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m ioargs\u001b[38;5;241m.\u001b[39mencoding \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m ioargs\u001b[38;5;241m.\u001b[39mmode:\n\u001b[1;32m    856\u001b[0m         \u001b[38;5;66;03m# Encoding\u001b[39;00m\n\u001b[0;32m--> 857\u001b[0m         handle \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mopen\u001b[39;49m\u001b[43m(\u001b[49m\n\u001b[1;32m    858\u001b[0m \u001b[43m            \u001b[49m\u001b[43mhandle\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    859\u001b[0m \u001b[43m            \u001b[49m\u001b[43mioargs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    860\u001b[0m \u001b[43m            \u001b[49m\u001b[43mencoding\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mioargs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mencoding\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    861\u001b[0m \u001b[43m            \u001b[49m\u001b[43merrors\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43merrors\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    862\u001b[0m \u001b[43m            \u001b[49m\u001b[43mnewline\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m    863\u001b[0m \u001b[43m        \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    864\u001b[0m     \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m    865\u001b[0m         \u001b[38;5;66;03m# Binary mode\u001b[39;00m\n\u001b[1;32m    866\u001b[0m         handle \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mopen\u001b[39m(handle, ioargs\u001b[38;5;241m.\u001b[39mmode)\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '/Users/yuliia/work/h2o-3/benchmark_data/HIGGS_train_limited1.csv'"
     ]
    }
   ],
   "source": [
    "X = pd.read_csv(DATA_PATH + \"HIGGS_train_limited1.csv\")\n",
    "sdt_time2, drf_time2 = run_benchmark(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "plot_result(sdt_time2, drf_time2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "## Evaluation Stage"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "def run_predict(SDT_model, DRF_model, test):\n",
    "    start = time.time()\n",
    "    SDT_model.predict(test)\n",
    "    end = time.time()\n",
    "    sdt_time = end - start\n",
    "    print(f\"SDT Time: {sdt_time}s\")\n",
    "    start = time.time()\n",
    "    DRF_model.predict(test)\n",
    "    end = time.time()\n",
    "    drf_time = end - start\n",
    "    print(f\"DRF Time: {drf_time}s\")    \n",
    "    return sdt_time, drf_time\n",
    "\n",
    "\n",
    "def run_predict_benchmark(train_data, test_data):\n",
    "    all_times = []\n",
    "    all_times_num_sdt = []\n",
    "    all_times_num_drf = []\n",
    "    for nthreads in threds:\n",
    "        times_sdt = []\n",
    "        times_drf = []\n",
    "        h2o.init(nthreads=nthreads)     \n",
    "        train = h2o.H2OFrame(train_data)    \n",
    "        test = h2o.H2OFrame(test_data)\n",
    "        SDT_model = H2OSingleDecisionTreeEstimator(model_id = \"single_decision_tree.hex\", max_depth=max_depth)\n",
    "        SDT_model.train(training_frame = train, y='label')\n",
    "        DRF_model = H2ORandomForestEstimator(model_id=\"random_forest.hex\", ntrees=1, max_depth=max_depth,\n",
    "                                             sample_rate=1, score_tree_interval=2)\n",
    "        train['label'].asfactor()\n",
    "        DRF_model.train(training_frame = train, y='label')\n",
    "        for i in range(attempt_per_thread):\n",
    "            sdt_time, drf_time = run_predict(SDT_model, DRF_model, test)\n",
    "            times_SDT.append(SDT_time)\n",
    "            times_DRF.append(DRF_time)\n",
    "        h2o.cluster().shutdown()\n",
    "        print(f\"SDT {np.mean(times_sdt)}s\")\n",
    "        print(f\"DRF {np.mean(times_drf)}s\")\n",
    "        all_times_num_sdt.append(times_sdt)\n",
    "        all_times_num_drf.append(times_drf)\n",
    "        all_times.append(f\"thread {nthreads} - SDT {np.mean(times_sdt)}s and DRF {np.mean(times_drf)}s\")\n",
    "        \n",
    "        \n",
    "    sdt_means = dict()\n",
    "    drf_means = dict()\n",
    "    for i, nthreads in enumerate(threds):\n",
    "        print(f\"{nthreads} - SDT = {np.mean(all_times_num_sdt[i])}, DRF = {np.mean(all_times_num_drf[i])}\")\n",
    "        sdt_means[nthreads] = np.mean(all_times_num_sdt[i])\n",
    "        drf_means[nthreads] = np.mean(all_times_num_drf[i])\n",
    "\n",
    "    return sdt_means, drf_means \n",
    "\n",
    "def plot_predict(SDT_means, DRF_means):\n",
    "    data = {\"x\":[], \"y\": [], \"label\":[]}\n",
    "    for label, coord in SDT_means.items():\n",
    "        data[\"x\"].append(label)\n",
    "        data[\"y\"].append(coord)\n",
    "\n",
    "    data_drf = {\"x\":[], \"y\": [], \"label\":[]}\n",
    "    for label, coord in DRF_means.items():\n",
    "        data_drf[\"x\"].append(label)\n",
    "        data_drf[\"y\"].append(coord)    \n",
    "\n",
    "    fig=plt.figure(figsize=(8,10))\n",
    "    fig.add_subplot(111)\n",
    "    plt.plot(data['x'], data['y'], '-', label=\"SDT\", linewidth=3)\n",
    "    plt.plot(data_drf['x'], data_drf['y'], '-', label=\"DRF\", linewidth=3)\n",
    "    plt.xlabel(\"Number of threads\")\n",
    "    plt.ylabel(\"Computing time (s)\")\n",
    "    plt.legend()\n",
    "    plt.tick_params(direction='out', length=6, width=2) \n",
    "    plt.title(f\"Single Decision Tree - evaluation benchmark\\nModel: max_depth = {max_depth}\")\n",
    "    plt.savefig(f\"h2o-eval-perf.png\", bbox_inches='tight', pad_inches=.05)\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "# Evaluation stage parameters\n",
    "X_train = pd.read_csv(\"smalldata/yuliia/HIGGS_train_limited1.csv\")\n",
    "X_test = pd.read_csv(\"smalldata/yuliia/HIGGS_test_limited1.csv\")\n",
    "sdt_time3, drf_time3 = run_predict_benchmark(X_train, X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "plot_predict(sdt_time3, drf_time3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "h2o-venv",
   "language": "python",
   "name": "h2o-venv"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
